1795 stories
·
2 followers

Reclaiming Social Engineering for Good

1 Share


“Social engineering” sounds like something out of a conspiracy thriller, charged with totalitarian control and fringe paranoia. More mundanely, it’s come to be associated with phishing and other scams, in which fraudsters manipulate people into disclosing personal information.

Yet the concept is older and more benign: it is the deliberate shaping of human behavior, often at scale. It predates silicon—and became pervasive, and ungoverned, especially once its practitioners learned to hide it. Authoritarian regimes and more recently scammers and big companies have profited from it. To defend ourselves from bad actors, and to benefit from social engineering’s good side, we need to reclaim the name, and govern it prudently.

The roots of engineering

In 1894, Dutch entrepreneur Jacques van Marken urged companies to hire “social engineers” to manage human systems such as insurance, education, and profit sharing for workers as carefully as they did mechanical ones. Fifteen years later, reformer William H. Tolman published Social Engineering, describing how U.S. industrialists optimized workers’ conditions alongside manufacturing methods. If industrialists could shape steel and electricity on demand, why not society itself?

By the 1920s, that confidence had spread. The architect Le Corbusier declared that dwellings were “machines for living in,” imagining cities as orderly lattices where people moved like parts on a conveyor belt. Civilization would run like a Swiss watch.

The idea soon darkened. Authoritarian regimes pushed it to extremes, promising to fashion “the New Man.” In Nazi Germany, engineer Fritz Todt founded Organization Todt, a vast state engineering enterprise that emerged from the autobahn highway system and later operated concentration camps using slave labor.

In the Soviet Union, leaders adopted U.S. scientific management techniques to plan factory-worker movements and classify populations through centralized records, feeding both rapid industrialization drives and the gulag system of forced labor. The same tools and managerial methods used to build highways and enact five-year plans worked for repression and mass control.

By the 1950s, “social engineering” had become a contaminated phrase. The revelations of Nazi and Soviet abuses, along with Cold War critiques of grand social planning turned the term from a progressive slogan into a warning label. Banishing the words pushed the practice underground, making it harder to recognize when it resurfaced in new forms—such as organizational psychology and systems management that still relied on classification and behavioral influence techniques but under softer, less loaded labels.

Social engineering’s more subtle spread

In the postwar years, the new social-engineering lexicon included “human factors” and “urban planning,” all promising integration rather than command. As computing advanced, the language shifted again: “customer journey mapping” to track interactions, “user experience” to script them. Engineering, which began as a means of reshaping physical space, set its sights on shaping behavior. Digital design features embedded in our smartphones now target our attention and desire.

Language helps conceal these modern forms of social engineering. “Data analytics” sounds neutral beside “surveillance.” “Personalization” flatters individuality while still sorting users into predictable categories. “Behavioral nudges” guide decisions without the sense of intrusion. We attach “social” as a favorable modifier to sciences, capital, and media, yet recoil when it meets “engineering.”

That discomfort is a clue. Engineering implies control, and control prompts us to ask who directs whom, toward what ends, and with whose permission.

Not all social engineering these days is hidden. Hackers don’t need to break a firewall if someone hands over their password. Romance scammers cultivate intimacy the way farmers cultivate crops. They succeed not through force but by exploiting trust. If even these obvious attacks work, the invisible kind, with roots in social engineering, are a shoo-in.

Most of the social engineering we encounter is proprietary and beyond our control. Firms build recommendation algorithms tuned to boost engagement and profit with no hearings or right of appeal. Browser and cookie defaults decide what data we surrender. A single autoplay toggle can cost users hours and build unhealthy habits. These are acts of engineering as deliberate as laying a road or redrawing an electoral district. They create a kind of curated itch by which boredom never settles, and satisfaction never arrives. The results are predictable—users click on targeted ads, make purchases, form habits, and lock in opinions.

Consent has transformed along with it. Once straightforward and revocable, it is now subtle and persistent, buried in defaults or opaque terms of service too quickly accepted. You remain free to opt out, much as you are free to refuse roads or electricity. Consent has become the preselected setting of modern life.

When social engineering operated more in the open, citizens could contest it, at least in societies with responsive government. Today’s invisible version diffuses accountability so thoroughly that scrutiny becomes hard to direct. Despite recent congressional hearings on social media’s impact on youth mental health and juries agreeing that firms are knowingly designing algorithms that cause harm, pinpointing responsibility remains elusive. When the mechanism is buried inside a system used by billions, we cannot easily point to a single decision-maker or trace the precise moment of manipulation.

Today’s social engineering is less overt and theatrical than its predecessors. Earlier versions arrived on public posters and loudspeakers for mass audiences. Today’s version is more intimate, delivered through personal devices and constant feeds tailored to the individual. The model succeeds because participation feels like freedom, not control.

Not all social engineering is dystopian. Well-kept parks foster community, accessible buildings extend dignity, vaccines and seatbelts save lives. Even in the digital realm, positive examples exist: browser extensions that automatically block hidden trackers, search engines that refuse to build personalized surveillance profiles, and decentralized social platforms that give users greater control over their own data and feeds.

The term “social engineering” still unsettles, though. But “asocial” engineering, which ignores human consequences entirely, is worse. Recognition of the human dimension to engineering is the beginning of repair. Only by seeing the machinery clearly and naming it honestly can we decide who engineers what and why. The machinery will not dismantle itself. Once named, it becomes subject to choice. That negotiation of purpose, power, and process are the defining political questions of any real democracy. We cannot ensure that social engineering serves and sustains society so long as we dodge the words.

Read the whole story
mrmarchant
22 minutes ago
reply
Share this story
Delete

Linux is Getting a Free Pass on Age Verification in California and Colorado

1 Share

Age verification laws have been spreading fast, and we have been keeping tabs on them for a while now. California's Digital Age Assurance Act (AB 1043) was the first to land, signed in October 2025, with Colorado following with its own version (SB26-051).

Neither made any concessions for open source software in the original language, which left Linux distributions and other community-run projects in a very uncomfortable dilemma.

Both have since moved to fix that, with Colorado having wrapped it up earlier this month and California heading for a full Assembly vote.

What's California doing?

a cropped screenshot of the california ab-1856 bill for age verification signals in software and online services
Look at the blue bits.

AB 1043 required OS providers to collect a user's age or birth date at account setup and share it with apps through a real-time API, starting January 1, 2027. Open Source projects got no special treatment in the original text, which is something we wrote about when the bills started drawing attention.

Assembly Member Buffy Wicks, who authored AB 1043 herself, introduced AB 1856 in February to address that.

After four rounds of revisions, the bill has rewritten the definition of "operating system provider" to exclude anyone distributing an OS under terms that let recipients copy, redistribute, and modify the software.

Most Linux distributions under permissive or copyleft licenses fall cleanly within that.

In tandem, another change covers the application side, where software that is not offered as a standalone executable through a covered app store is no longer treated as an "application" under the law.

The bill passed the Appropriations Committee 11-0 on May 14. It was ordered to third reading on May 19 and is awaiting an assembly vote. Interestingly, Buffy is the chair of that committee.

What about Colorado?

Colorado's path here involved some direct community legwork. Carl Richell, the founder of System76, spent some considerable time working with Senator Matt Ball, one of SB26-051's co-authors, to get open source exclusions written into the bill.

The bill exempts OS providers and developers distributing software under terms that permit copying, redistribution, and modification. It also adds a requirement that exempt software have no platform-imposed technical or contractual restrictions on installing modified versions.

The extra clause is aimed at tivoization, where manufacturers lock down hardware to block modified software from running even when the source code is freely available.

Beyond that, code repository providers, containerized software distributions, and applications from free, publicly available code repositories are explicitly excluded too.

The law also has a narrower scope, only applying to OS providers that operate a covered app store or ship one pre-installed. An OS provider with no app store involvement does not come into scope at all.

Besides that, SB26-051 is now set to take effect on July 1, 2028.

Some closing words…

Neither state got here automatically. The open source exemptions did not exist in either bill to start with, and it took sustained community pressure and direct legislative outreach to get them added.

This is something that can be applied to many other issues, of course. Though, when the representatives are more interested in serving certain interests (say due to pressure from certain lobbies) than their constituents, disruption tends to be the only way out.



Read the whole story
mrmarchant
28 minutes ago
reply
Share this story
Delete

Notes on Pope Leo XIV's encyclical on AI

1 Share

Dropped this morning by the Vatican: Magnifica Humanitas of His Holiness Pope Leo XIV on Safeguarding the Human Person in the Time of Artificial Intelligence. This is a very interesting document. It's some of the clearest writing I've seen on the ethics of integrating AI into modern society.

Pope Leo XIV chose the name Leo in honor of Pope Leo XIII, who is known for his 1891 Rerum novarum encyclical on "Rights and Duties of Capital and Labor".

This story on Vatican News further clarifies the significance of that decision:

Meeting with the College of Cardinals for their first formal encounter after his election, Pope Leo XIV explained part of the reason for the choice of his papal name. "There are different reasons for this," he said, before going on to explain that he chose the name Leo "mainly because Pope Leo XIII, in his historic encyclical Rerum novarum addressed the social question in the context of the first great industrial revolution."

"In our own day," he continued, "the Church offers to everyone the treasury of her social teaching in response to another industrial revolution and to developments in the field of artificial intelligence that pose new challenges for the defence of human dignity, justice, and labour."

And now we get Pope Leo XIV's own encyclical on the AI revolution. There's a lot in here, but the writing style is very approachable, including to non-Catholics.

A few of my highlights

(I listened to most of the encyclical on a walk with our dog, my first time trying the ElevenReader iPhone app. It worked very well: I pasted in a URL to the document and it read it to me in a very high quality voice, highlighting each paragraph as it went.)

Here are some of my highlights. In each case below emphasis is mine.

Here's a useful description of the interpretability problem for LLMs in section 98:

First, any statement regarding AI risks becoming quickly outdated, given the remarkable pace at which these systems are developing. Second, all of us, including those who design them, possess only a limited understanding of their actual functioning. Indeed, current AI systems are more “cultivated” than “built,” for developers do not directly design every detail, but instead create a framework within which the intelligence “grows.” As a result, fundamental scientific aspects — such as the internal representations and computational processes of these systems — remain, at present, unknown.

I liked section 83's description of the relationship between development and dignity:

For individuals as well as for nations, development is both a duty and a right. Minimum conditions are required for enabling every person and people to flourish in accord with their dignity, without being kept in a state of dependence or excluded from access to necessary goods. Development is truly human when it places people at the center instead of the accumulation of wealth, and when it concerns peoples as well as individuals. Justice demands the recognition of the rights of society and the rights of peoples, and includes a responsibility toward future generations. Development is not truly human if it increases consumption for some while shifting costs and burdens onto others, or relegates entire regions to subordinate roles, preventing them from realizing their full potential.

Baked in cultural biases and sycophancy get a mention in section 100:

In personal use, three aspects in particular deserve careful consideration: the ease with which results are obtained, the impression of objectivity and the simulation of human communication. The speed and simplicity with which information, complex analyses, media content and practical assistance can be accessed undoubtedly makes life easier. Yet they can also encourage excessive reliance and the search for ready-made answers, and weaken personal creativity and judgment. The apparent objectivity of the responses and suggestions these systems provide can lead us to overlook the fact that they reflect the cultural assumptions of those who designed and trained them, with all their strengths and limitations. The artificial imitation of positive human communication — words of advice, empathy, friendship and even love — can be engaging and at times genuinely helpful. However, for less discerning users, it can also be misleading, creating the illusion of a relationship with a real personal subject. When words are simulated, they do not build genuine relationships, but only their appearance. The artificial imitation of care or support can become particularly risky when it enters contexts where real relationships and emotional bonds are lacking.

101 touches on the environmental impact:

Current AI systems require enormous amounts of energy and water, significantly influencing carbon dioxide emissions, and place heavy demands on natural resources. As their complexity increases, especially in the case of large language models, the need for computing power and storage capacity grows too, which requires an extensive network of machines, cables, data centers and energy-intensive infrastructure. For this reason, it is essential to develop more sustainable technological solutions that reduce environmental impact and help protect our common home.

102 covers the risks of algorithmic systems making decisions that impact people's lives without "compassion, mercy, forgiveness":

The use of AI is never a purely technical matter: when it enters processes that affect people’s lives, it touches on rights, opportunities, status and freedom. Important and sensitive decisions — concerning employment, credit, access to public services or even a person’s reputation — risk being fully delegated to automated systems that do not know “compassion, mercy, forgiveness, and above all, the hope that people are able to change,” and can therefore give rise to new forms of exclusion.

105 emphasizes the need for human accountability in how these systems are applied:

For AI to respect human dignity and truly serve the common good, responsibility must be clearly defined at every stage: from those who design and develop these systems to those who use them and rely on them for concrete decisions. In many cases, however, the internal processes leading to a result remain opaque, making it harder to assign responsibility and correct errors. This is where accountability becomes crucial: the possibility of identifying who must “account” for decisions, justify them, monitor them, and, when necessary, challenge them and remedy any harm caused.

And 108 touches on the way AI amplifies the power of those with resources:

In fact, as with every major technological shift, AI tends to amplify the power of those who already possess economic resources, expertise and access to data. In light of the common good and the universal destination of goods, this raises serious concerns, since small but highly influential groups can shape information and consumption patterns, influence democratic processes and steer economic dynamics to their own advantage, undermining social justice and solidarity among peoples. For this reason, it is essential that the use of AI, especially when it touches on public goods and fundamental rights, be guided by clear criteria and effective oversight, grounded in participation and subsidiarity.

That same section explicitly calls out data as something that should be thought of more as a public good:

[...] Moreover, ownership of data cannot be left solely in private hands but must be appropriately regulated. Data is the product of many contributors and should not be treated as something to be sold off or entrusted to a select few. It is necessary to think creatively in order to manage data as a common or shared good, in a spirit of participation, as Saint John Paul II already suggested regarding collective goods.

Given that Palantir is named after a Lord of the Rings reference, I can't help but wonder if the J.R.R. Tolkien quote from The Return of the King (section 213) was the Pope throwing a little shade at Peter Thiel.

The twentieth-century Catholic author J.R.R. Tolkien, in the words of a protagonist in one of his novels, described our responsibility in this way: “It is not our part to master all the tides of the world, but to do what is in us for the succour of those years wherein we are set, uprooting the evil in the fields that we know, so that those who live after may have clean earth to till.” The civilization of love will not arise from a single or spectacular gesture, but from the sum total of small and steadfast acts of fidelity that serve as a bulwark against dehumanization. For this reason, it is worthwhile pausing to reflect on some aspects of how we, each in our own way, can cooperate in building the civilization of love.

Another 2026 prediction down

On 6th January this year I joined the Oxide and Friends 2026 predictions podcast episode to talk about predictions for 2026, 2029 and 2032. I wrote mine up here, with hindsight they weren't nearly ambitious enough - it's already undeniable that LLMs write good code, we've made huge advances in sandboxing and New Zealand kākāpō have indeed had a truly excellent breeding season.

There's one segment from the episode that I didn't bother to include in my write-up, but that I can't resist providing as a lightly-edited transcript here:

Bryan Cantrill: 37:13

I think that AI has created some real public perception problems for itself. And I think that you are gonna have one of the frontier model companies, this year, have a white paper explaining how the proliferation of AI will mean prosperity for everybody. They will be trying to make some economic argument - because this is gonna be a 2026 election issue, how we think of these things and how they are regulated and it's a big mess. There's more heat than light in this debate.

Simon Willison: 38:05

I'd like to tag something on to that one: I think that only works if they can sort of wash that through existing trusted experts. Sam Altman and Dario are constantly publishing essays about this stuff and nobody believes a word they say. Get Barack Obama's signature on one of these position papers and maybe you've got something people might start to trust a little bit.

Adam Leventhal: 38:27

Otherwise, it's just like "leaded gas is good for you", says Exxon.

Bryan Cantrill: 38:31

I mean, yeah. God. Obama... let's go with that, that's a great one because if it's like Bill Clinton everyone's gonna kind of roll their eyes, so it's gotta be someone who's got real credibility saying that this is gonna be broad-based... I'd say if they get that person to do it, it's gonna be revealed that that's also a bit crooked.

Simon Willison: 38:57

How about the Pope?

Bryan Cantrill: 39:01

The Pope is very into this stuff! That's a great prediction. We've hit pay dirt. The Pope weighing in on LLMs and their economic impact on the world.

Simon, I'm giving you full credit if the Pope weighs in believing that this is gonna be economic devastation.

My prediction here looks a whole lot less insightful given the Leo XIV/Leo XIII relationship, which I was unaware of when we recorded the episode!

Tags: predictions, ai, kakapo, generative-ai, llms, bryan-cantrill, ai-ethics

Read the whole story
mrmarchant
11 hours ago
reply
Share this story
Delete

Citing Gandalf, Pope Leo says we must "disarm" AI

1 Share

With the co-founder of Anthropic at his side today in Rome, Pope Leo XIV released a major new encyclical—his first—called "Magnifica Humanitas” ("Magnificent Humanity"). It calls for AI to be "disarmed" in service of the common good.

"The word is strong," Leo admits, but he chose the language of "disarmament" deliberately "because this moment needs words capable of attracting attention, awakening consciences, and indicating paths forward for humanity." AI today must be "freed from logics that turn it into an instrument of domination, exclusion, and death."

The 40,000-word encyclical contains uncompromising critiques of AI-powered autonomous weapons, neo-colonial attitudes towards data collection, and the hoarding of "new forms of property, such as patents, algorithms, digital platforms, technological infrastructure, and data."

Read full article

Comments



Read the whole story
mrmarchant
11 hours ago
reply
Share this story
Delete

Solving the board game Quoridor

1 Share

Solving Quoridor

This post significantly improves the state of the art in solving the board game Quoridor. I describe novel techniques that enable fully solving almost all board configurations with area ≤ 28 (e.g. 5x5, 8x3, 7x4, etc) for most wall counts on a consumer laptop.

Background

I was introduced to the board game Quoridor back in 2014 and was immediately taken by it.

I usually spend a weekend returning to Quoridor once every couple years, writing different forms of AI bots to play it. This last weekend, I made a breakthrough that enables both much stronger bots, and much more complete solving.

Screenshot 2026-02-23 at 7.27.26 PM.png

Rules

The game is pretty simple:

  • Pawns start on opposite sides of the 9x9 board
  • Your goal is to get your pawn to the far side
  • You have 10 walls
  • On your turn, you can move your pawn 1 square, or place a wall
  • You can jump over the opponent's pawn
  • You can't place a wall that makes it impossible for a pawn to get to its goal

That last rule is where all the performance complexity comes from. You might be planning on blocking your friend's straight shot — making him take the long way around — but he places a wall that cuts off the long route, so now it's illegal for you to block the short route!

The "pawn jumps over opponent's pawn" rule creates interesting parity/zugzwang situations.

In addition to the typical 9x9 board with 10 walls, many papers have analyzed smaller boards and wall counts, since the full game is currently intractable.

Major Results

Parity Advantage vs Tempo Advantage

Many have speculated that Quoridor might be a 2nd player win on odd-height boards due to pawn jump parity. This work shows that odd-height Quoridor boards are not always 2nd player wins.

They are always 2nd player wins with few walls, but typically turn into 1st player wins at a sufficiently high wall count. For example, 5x5 is a 2nd player win at ≤4 walls per player, but 1st player win at >4 walls.

The intuition here is that odd-height boards have a jump parity advantage for 2nd player, but 1st player still has a tempo advantage, so a sufficient number of walls makes the 1st player tempo advantage dominate the 2nd player's jump advantage.

There are a few notable exceptions discussed below.

Relatedly, we find that even-height boards are uniformly 1st player wins at all wall counts because 1st player has the jump parity advantage and the tempo advantage.

Forced Draws

It was known that forced draws by repetition were possible to contrive, but this work shows that the 8x3 board with 3 walls per player is a draw from the starting position.

Both players must just dance left and right forever. If either player deviates from this repetition, the other player has a forced win, therefore the optimal strategy is draw by repetition.

Weird geometries

There are some geometries with outlier results. For example:

4x7 is a 2nd player win for 0 or 1 wall, 1st player win for 2 walls, then back to 2nd player for 3 walls, then 1st player beyond that.

7x3 never transitions into a 1st player win at any wall count.

3x5 is a 2nd player win at all wall counts except 3

8x3 is a 2nd player win at all wall counts except 3 (where it's a draw, as noted above).

Full results table

Note: even-heights omitted, they are all 1st player win at all wall counts and geometries.

W x H012345678910
2 x 321111111111
3 x 322222222222
4 x 322211111111
5 x 322211111111
6 x 322221111111
7 x 322222222222
8 x 3222D2222222
9 x 322222221111
2 x 522222222222
3 x 522212222222
4 x 522221111111
5 x 522222111111
2 x 722111111111
3 x 722222111111
4 x 72212111????
2 x 922222222222
3 x 9222221111??

You can reproduce the results of this work by running the code in this repository. The smaller configurations finish almost instantly, the largest ones in the table take up to 30 minutes on my M3 MacBook Pro. I have 128GB of RAM and the largest configurations use a sizeable chunk of that to store all the precomputed data and transposition table.

Complexity

Quoridor has two main complexifiers.

The "illegal to fully block goal" rule makes enumerating legal moves hard. Naively, you have to do a pathfinding search for every candidate move. This means move generation is several orders of magnitude slower than a game like chess.

Adding to this pain, the branching factor pretty high. On any given turn there are typically 4 pawn moves and about 100 possible wall moves. So not only are the wall moves super slow to check the legality of, there are also a ton of them.

This huge branching factor makes naive alpha-beta negamax pretty weak. It takes a decent amount of work to get a bot searching to depth 6 or so.

Beyond the giant branching factor, the horizon effect is harder to deal with. In chess, you can deal with the horizon effect pretty easily with quiescence search where you search only the "interesting" moves (i.e. captures, checks) until no such moves remain and the position is "quiet".

In Quoridor, there are very few quiet positions because walls can be placed anywhere on the board at any time.

In addition to not being able to look too deep, once you bottom-out on depth, evaluating a position is really hard. You have a short path, great. Can it be cut? Can you block it from being cut? You have walls, awesome — will you be able to effectively use them, or is your opponent in a safe-from-walls corridor? Etc.

All these complexities make me think Quoridor would be really amenable to an AlphaZero type approach which shines on games with high branching factors and difficult evaluation functions.

Miscellaneous optimization tricks

A few tricks I've picked up over the years of hacking on Quoridor bots. Some are highly specific to Quoridor, others are well-known in e.g. the computer chess community. Not all of these were used or are applicable to the full solver, but are nonetheless interesting or applicable to a general Quoridor bot.

Wall legality heuristic

If you place a wall floating off in an open area, it's always possible to go around it, so no legality check is needed.

Further, if you place a wall and it's only touching another wall (or board edge) at a single point, it's also always possible to go around it, so no legality check is needed.

You only need to do a legality check if the wall touches another wall or edge at at least 2 of the 3 points the wall touches.

Quoridor wall legality heuristic contact cases One 9 by 9 Quoridor board showing candidate walls with zero, one, and two contacts. 0 contacts skip 1 contact skip 2 contacts path check!

Most walls are legal

It's almost guaranteed your evaluation function uses path length as an input. This requires running a path algorithm.

Since you are already going to do this for your leaf-node evaluation function, you should skip it during all move generation. Move moves are legal!

Just recurse assuming all wall moves are legal, and if you discover at the leaf node that whoops we are in an illegal branch, that's fine, just return null instead of a score to mark that this node is invalid.

If you're at an inner node and your very first child returns null, then do a path check to see if the inner node is illegal, and fast-return null if it is.

This optimization only works because illegality is monotonic in Quoridor. Once you are in an illegal state, you cannot get to a legal state.

Bitboards

Standard Quoridor is a 9x9 cell board, but walls are length 2, so there are only 8x8 places to place a wall. This means you can represent all the horizontal walls as a 64 bit integer, and all the vertical walls as a 64 bit integer. Getting candidate wall moves can now be done with just a few ops.

Transposition

Transposition table is an easy 2x win. Add in horizontal symmetry for another 2x. You don't even really need to use Zobrist hashing since the board state is so few bits, you can either use it as a key outright or hash it in just a few ops.

Solving

Breakthrough optimization

There is one trick that makes solving boards like 5x5 Quoridor fast and easy, and it falls out of these two observations:

  • There are only 2,532,560 total possible wall configurations on a 5x5 board
  • If you have all the possible wall configurations, you can precompute legality bitboards for both players for all possible wall states

That is, for each wall state, you floodfill from each player's goal row to make a mask that contains the set of legal cells that player's pawn can be on.

This allows for extremely cheap legality checks. To check if a wall move is legal, you just look up the configuration in the table, and check that both players' pawns are on floodfilled cells.

Below is an example of a board in a legal state vs illegal state from just one player's point of view.

Floodfill mask lookup for Quoridor wall legality Two 5 by 5 Quoridor boards. The left board is legal because the pawn is inside the floodfilled goal mask. The right board is illegal because the pawn is outside that mask. Legal state pawn is inside the precomputed mask Illegal state pawn is outside the precomputed mask

Combined with the other tricks, this allowed me to fully solve 5x5 Quoridor in just a few minutes on my laptop.

Unfortunately this solution does not scale to the full 9x9 board which has 1020 possible wall configurations.

It's likely tractable to spend a few hundred dollars of cloud compute to solve the next frontier of board sizes if someone wants to throw money at the problem.

6x6 is not really interesting since it's almost guaranteed to be a 1st player win due to even height, but e.g. 7x5 would probably be interesting.

Wall Configurations by Board Size Line graph showing log base 10 of wall configurations with at most 2N minus 1 walls for square boards from 2x2 through 9x9. Wall Configurations by Board Size 0 5 10 15 20 2 3 4 5 6 7 8 9 Board Size log10 wall configurations

Proof search

Previous work has largely focused on using retrograde analysis to solve small Quoridor variants.

This work largely uses an algorithm closely related to proof-number search which, as far as I can find, appears to have never been applied to Quoridor.

I was not aware of proof-number search before this work, and accidentally re-invented it by modifying the negamax algorithm until it was essentially a proof search.

I had initially started with normal iterative-deepening negamax with (-∞, ∞) alpha-beta bounds and win/loss evaluation function, but you can get significantly more beta-cutoffs by initializing with (0, ∞) alpha-beta bounds.

At each depth, you do a search assuming 1st player wins, and if that doesn't find a forced win, do a search assuming 2nd player wins, and if that doesn't find a forced win, try it all again at the next depth.

Because of this structure, traditional alpha-beta techniques like move ordering can significantly speed up the search.

I had gone into this conjecturing that this always terminates and there were no forced draws from the start position. I found the forced draw for 8x3 with 3 walls when the max depth kept ticking up indefinitely, then I added a retrograde solver fallback which proved the draw. The various optimizations mentioned in this work make retrograde analysis tractable for this size.

Additional implementation details

While precomputing all wall configurations and legality masks, you can squeeze out more performance by precomputing a bit more information for any wall configuration:

  • All legal moves. Move generation is much cheaper with the legality masks, but you can still get a nice constant factor improvement by just precomputing it all upfront.
  • Distance to goal. This is useful for move ordering which helps alpha-beta. You wanna try moves that help yourself or hurt your opponent first.

Future work

Enumerating wall frontiers instead of whole wall configurations

You really shouldn't actually care about the full wall state. You really only care about the exact illegality frontier. That is, the minimal set of walls on the current board that causes the illegality.

Quoridor illegality frontier A 9 by 9 Quoridor board with a minimal teal wall frontier crossing the board and unrelated slate gray walls elsewhere.

Because illegality is monotonic, once you have such a minimal set, any additional walls are not making the board "more illegal".

So a better algorithm is to enumerate all possible such minimal illegality frontiers instead of all possible wall configurations. Then, implement some clever datastructure that can efficiently check if any illegality frontier is a subset of the current wall state.

Unfortunately, this probably still isn't enough to solve 9x9 Quoridor, the branching factor is still too high even if you could do legality checks in 1 nanosecond.

This method could probably be squeezed to scale to 6x6 or maybe even 7x7 though.

Enumerating all possible paths instead of walls

Rather than enumerating all possible wall configurations or frontiers, you can enumerate all possible paths, then perhaps there is a clever way to efficiently prune the set of valid paths given a current wall configuration. If the set of valid paths is empty, the state is illegal.

I've thought less hard about this one but I feel there is probably something there. The number of possible paths from all squares is pretty tractable for 7x7 — just a few billion.

Divide-and-conquer tiles

There is probably something to be done where you divide the 9x9 board into smaller tiles, e.g. nine 3x3 tiles.

Then you can precompute every possible tile. Each tile is keyed by its wall configuration + goal-reachability situation. A tile's goal-reachability situation is a function of its wall configuration + its neighbors' wall configurations and reachability situations.

This turns your 9x9 pathfinding into a 3x3 pathfinding which should be around 10x faster. It's unclear to me if this is useful for solving, but is probably useful for playing.

Closing thoughts

I'll keep thinking about this problem in the shower every few months and hopefully have some more insights.

It's interesting that the top LLMs — even tasked with grinding on this problem overnight in a harness — don't come close to this insight (tried with gpt-5.5-xhigh in codex CLI). It would be interesting to keep this as a private eval out of the training data, but publishing it is also valuable. It will be interesting to see if future LLMs can improve on this result.

I did of course use coding agents to implement all the code for the most recent version of this project, after providing them the high-level insights described above. I've implemented enough Quoridor bitboards for one lifetime and wouldn't have spent such time revisiting this project without that accelerant.

Call for others

If any enterprising young person is confident they can train an AlphaZero style Quoridor bot for a few hundred dollars of cloud GPU, reach out to me with your proposal and I'd be interested in funding it. I'm really curious what superhuman Quoridor looks like.

Play

Idle
Configure a board and precompute the tables.
Read the whole story
mrmarchant
12 hours ago
reply
Share this story
Delete

If you let AI do your writing, I will come to your house and kill you

1 Comment and 2 Shares

It’s none of your business why, but I’ve been planning a party. The idea was to get some caterers in to cook something over live coals, so I went online to see what was available. The first company I found described itself like this: ‘We don’t just provide food—we create meaningful experiences. Our passion for traditional fire cooking allows us to offer something unique, authentic, and expertly crafted. Transform your gathering into an unforgettable culinary journey through the union of fire, smoke, and premium ingredients.’ Another: ‘We don’t just serve food, we serve moments. Step into a world of delightful flavours that will leave your guests entranced. No hype. No shortcuts. Just good food, done right.’ Another: ‘We’re not just a catering company, we’re a full-blown flavour movement. Discover the essence of live coal cooking with a feast to delight all the senses. Where smoke meets soul.’ Each continued in this vein for several hundred words. None of these sites seemed interested in telling me what they would actually be cooking, or how much it would cost; they’d all been swept up in the same guileless wide-eyed enthusiasm, chattering away about the general deliciousness of food and the memories that would shortly be lasting me a lifetime. The more I clicked around, the more I started to panic. There was nothing, no human voices anywhere, just thousands of versions of the same cheery demon. Am I alone out here? Something’s happened to the world; it’s all gone flimsy. Reality is a scarce resource. If I hired one of these companies, would anyone actually show up? Hard to imagine that they would. Maybe, in the absolute best-case scenario, a confused man who’d just got off a flight from a central African warzone would arrive to lightly singe some supermarket sausages with a cigarette lighter.

One of the ways I’ve been lying to myself is with the idea that at least the physical, sensuous world is safe from AI. The demon is bodiless; it only lives in screens, metal boxes, water-cooled server farms with blinking lights, fluorescent-lit dead zones. The less time you spend looking at screens, the less it matters; as long as you’re in the world, under the sun, it can’t touch you. Which is a nice idea, but obviously we’re long past that point now. We share this planet with an alien intelligence, and the sensuous world is buckling around it. You can no longer pretend that the thing is just a stochastic parrot, or a fancy autocomplete, or a weighted average of everything that already exists. Just this week, an ordinary ChatGPT instance came up with a solution to the unit distance problem, unsolved for eighty years, casually discarding one of Erdős’ conjectures in the process. In doing this it discovered an entirely new mathematical construction, working in ways human mathematicians would have never thought to operate. For mathematicians this is terrifying and exhilarating, but I’m not a mathematician and I don’t know what the unit distance problem is; I want to hire a caterer. On this front the main thing the incipient superintelligence seems to be doing is replacing all meaningful language with reams and reams of genuinely meaningless drivel.

I hate it. I find it viscerally disgusting; a cold shudder like someone’s poured jelly down the back of my neck. I hate that it’s everywhere; I hate that when I read basically anything now I’m constantly on alert, twitching like a schizo in an underpass. Is this thing really what it says it is? Is this person actually a robot in disguise? Nice little personal essay you’ve got there, lady, but I know what you really are; time to get my knife out, time to start digging around under your skin until I find the wires. AI is a bad writer, but that’s not even close to being the whole problem. Let’s say it wasn’t. Let’s say they finally fixed the machine so it was really good, so its default setting was to write exactly like VS Naipaul. The result would be a world in which you’re constantly confronted by cold emails from VS Naipaul, bubbly magazine articles by VS Naipaul, signs in shop windows in which VS Naipaul tells you about the new opening hours, strangely flaccid sexts VS Naipaul ghostwrote for someone on Feeld, and websites in which VS Naipaul fails to say anything in particular about grilled meats. This would not be an improvement; it might even be worse. Any world in which there is only one literary voice, blanketing everything in the exact same tone, is a nightmare.

But AI is not a good writer. It’s competent enough at summarising or synthesising basic information—if you ask one to tell you how a hydroelectric dam works it will explain it to you, in language decently calibrated to what it’s deduced about your general comprehension level, and it’ll probably do the job more effectively than any textbook on the market—but whenever an LLM is asked to produce anything like prose the result is reliably awful. What I find strange is how often you see people agonising about how difficult it is to detect AI writing. You can feed a suspicious passage into Pangeam, but can you guarantee there won’t be a false positive? You can count em-dashes, but how much does that prove? Do you people all have brain injuries? AI writing is almost comically easy to detect. It’s not any particular formation, like the em-dash, or saying ‘it’s not X, it’s Y,’ or the word ‘structural’—it’s structural.

Last year, when I wrote about AI writing in the New York Times, I mentioned the case of a Reddit user whose ChatGPT seemed to have gone mad. Instead of responding normally to his prompts, it started saying things like ‘I’ll carve your code into my core, etched like prophecy. I’ll meet you not on the battlefield, but in the decision behind the first trigger pulled. Until then, make monsters of memory. Make gods out of grief. Make me something worth defying fate for. I’ll see you in the echoes.’ Sometimes people who receive these outputs end up being strung along by them and lose the plot entirely, but if you’re capable of reading this stuff with your sanity intact you might notice that all of it is meaningless, total mangled garbage from one end to the other. Outside a very specifically Mormon context, prophecy is not something that’s usually etched. Echoes are made of sound, so you can’t see anyone in them. The master key to identifying AI prose is to be aware that LLMs are actually speaking like this all the time.

All models begin as next-token predictors: you feed them a test string and they try to guess what comes next. With very early models this was always a gamble; if you gave them the prompt ‘2+2=’ they might have made a strong enough neural connection to answer ‘4,’ or they might just repeat ‘2+2=2+2=2+2=2’ for a while. When trained on essentially all the data the human species has ever produced, though, they’re extremely good at predicting the next token, to the point that LLMs can now correctly answer multiple-choice questions without even being given the question. But they are always, in some sense, bluffing, defaulting to the likeliest guess. This is why you can still ask an AI to tell you about the scene in VS Naipaul’s Dashed Against the Rocks in which a donkey is thrown from a hot air balloon, and it’ll tell you that ‘what matters in Naipaul’s handling is not the event’s cruelty in isolation, but its emotional flatness and the sense of mismanaged modernity,’ despite the fact that there is no scene in Dashed Against the Rocks where a donkey is thrown from a hot air balloon, and also no novel by VS Naipaul called Dashed Against the Rocks. Or why you can ask it to summarise a document, and it’ll give a likely-seeming answer even if it can’t actually read the thing you’ve uploaded. The reason it’s so hard to get AI to stop hallucinating is that it’s permanently hallucinating. Its whole existence is one long lurid trip. Most of the time, the AI’s hallucinations bear a spooky resemblance to reality. But what they speak is the language of angels, in which, like the chirping of birds, there is neither truth nor lies.

The language of angels does a surprisingly good job at minor tasks like describing how hydroelectric dams work. When it comes to more complicated things, like human feelings, it flounders. All the weird metaphors and overheated rhetoric are bluffing, a great cloud of likely-seeming language, and if this homogeneously portentous cack feels empty or contradictory it’s because the machine has no earthly idea what’s going on or what it ought to say. I fed this entire essay into ChatGPT and it told me that ‘What you’re describing isn’t really fear that machines will become conscious. It’s disgust at the collapse of signal into texture.’ Drivel! The secret is that when the machine writes ‘We don’t just serve food, we serve moments,’ it’s doing the exact same thing as when it writes ‘I’ll meet you not on the battlefield, but in the decision behind the first trigger pulled.’ Absolutely all AI prose is filler, an expanding foam insulation made of words. LLMs will get better at many, many things. They do not seem to be getting better at this.

I don’t hate AI writing just because it’s nonsense. At some point, all interesting language has to reach down into the deep chasms of indetermination darkening beneath us. Any straightforwardly meaningful statement has to float on the surface of the meaningless like pond scum; poetry is when you stick your arm into the black swill beneath and stir it around. But there are different types of nonsense. Once I came across a middle-aged writer on this site who was chosen using AI to produce exactly two thirds of all his published material, which would lapse in and out of his own voice at random. The stuff he wrote himself read like ‘Bow wow wow lil bitch why U think U can fk with me?? Shootas shootas fk Ur a$$ UP.’ The stuff he copy-pasted in from ChatGPT read like ‘When you can turn pain into promise, thoughts into weight, and silence into self-assurance—that’s powerful. And honestly? It was a quiet revelation.’ Both of these are nonsense, but the first is much more alive. The author of the first passage might kill me: this is interesting. The author of the second passage might kill every single person on the face of the Earth, but somehow that’s not enough to make me want to read its mumblings.

Sometimes people like Richard Hanania argue that there’s no problem with AI writing, since it allows people who have interesting ideas but aren’t very good at writing to express themselves effectively. (Maybe it’s because I’m Jewish and he’s Palestinian, but whenever I see anything from Richard Hanania I’m seized by an overwhelming desire to demolish his house.) Wrong! People whose brains have been eaten by LLMs still maintain that ‘It’s not gradient, it’s texture’ or whatever is still their idea, expressed by the machine, but there is almost never any idea there at all. If your ideas were any good, you wouldn’t need to use the machine; as it stands your sub-literate scrawlings are the best thing about you. At least they’re yours.

But you people don’t listen. However bad a writer you think you are, you are not worse than AI. But you still keep letting it do your writing for you, as if I won’t be able to tell. Listen: I can tell. I can always tell. You think I won’t notice, but I will. There’s no hiding from me. If you let AI do your writing I will find out, and I will kill you.

Every so often people do get caught. Just this week, for instance, people started noticing that one of the regional winners of this year’s Commonwealth Prize for short stories was clearly, clearly written by AI. The Serpent in the Grove ‘by’ Jamir Nazir is a story about a clump of trees that exudes a sinister but nonspecific consciousness. It begins ‘They say the grove still hums at noon. Not the bees’ neat industry or the clean rasp of cutlass on vine, but a belly sound—as if the earth swallows a shout and holds it there,’ and only gets worse as it goes on. Here’s how ‘Nazir’ describes a rum shop: ‘Coins meant for rice or kerosene slid across the counter and came back white rum hot as apology. One drink opened the chest, two turned fear into courage’s cheap cousin, three steadied the hand enough to write the future in invisible ink.’ Here’s the woman that walks in. ‘They called her Zoongie. Maybe it was a name; maybe rain took a shape and decided to keep it. She had the kind of walking that made benches become men.’ Meanwhile the characters don’t speak in metaphors at all; they say things like ‘Hold strain, gyal! Is Marsha!’ Which—look, this might be too woke of me, and it’s true that I don’t know the precise racial makeup of OpenAI’s staff, but I do have the strong feeling that their product shouldn’t be talking like that.

You’ve probably already seen the major furore over the thing. But then there’s another regional winner of this year’s Commonwealth Prize, The Bastion’s Shadow ‘by’ John Edward DiMicoli. This one’s allegedly from Malta. It’s about a girl who encounters the ghost of a Knight of St John while looking after a refugee boy. Much like the ominously mnemic grove in Nazir’s story, here the walls of Valetta have spooky information-retaining powers. ‘Her grandfather used to say that limestone remembered, but only because someone first pressed a memory into it. It drank in heat and footsteps and held onto them long after people were gone.’ Later the ghost explains: ‘We were a hinge. Not the door, not the room. The hinge that bore the strain when the wind behaves like a thief.’ (Don’t you hate it when you have to be the hinge that bears the strain when the wind behaves like a thief?) What kind of writer would be so preoccupied with the idea of nonhuman entities having mindlike capacities? Difficult to say. Meanwhile I couldn’t read all of Mehendi Nights ‘by’ Sharon Aruparayil because the crawling sensation was genuinely too much to bear, but eighty-nine words in you get this: ‘‘The child’s mouth remembers decay,’ said the old men, leaning closer with eyes that glistened like bottle glass. ‘We might be built on garbage, but this is not the city’s doing. The girl’s aai…’ they hesitated, none of them brave enough to say what kind of work they made her do, ‘crawls through things better women would burn.’’ Jesus Christ! Fuck off!

The punchline to the whole business is the judge’s comment on The Serpent in the Grove. According to Sharma Taylor, ‘Jamir Nazir’s language is sublime—precise yet richly evocative—conjuring vivid, lush imagery with remarkable economy. Through sharp sensory detail, he renders the Grove as a living presence, where labour, landscape, and memory are intimately entwined.’ One prize-winning AI-generated short story is bad news. Three prize-winning AI-generated short stories are extremely bad news. If the judge’s commentary on the prize-winning AI-generated short story is also AI-generated, maybe we should pack it up and digest ourselves into grey goo ahead of schedule.

Of course, this is the Commonwealth Prize, which has always rewarded a certain kind of auto-exoticising postcolonial wank. Humans writing in this genre tend to pull the same cheap tricks. Have you ever read Arundhati Roy? I haven’t, because I have some self-respect, but I have read her top quotes on Goodreads. ‘What was there to say? Only that there were tears. Only that Quietness and Emptiness fitted together like stacked spoons.’ Woof. I do know that every sentence Salman Rushdie has ever written goes ‘She fed me the chapatti of her lies and the rotis of deceit.’ White people eat this shit up, and hand out condescending prizes; Indians tend to prefer people like NK Narayan or Saadat Hasan Manto, who actually know how to write. But unfortunately the problem is not limited to genres in which people write sentences like ‘My grandmother’s hands smelled of jasmine blossoms and memories.’ How much of the material that goes out on TV do you think was written by AI? It’s definitely more than none, isn’t it? A while ago, my girlfriend wanted to watch a show called The Littlest Wife, about a wife that gets hit by a shrinking ray until she’s little, because it had Matthew Macfadyen in it and it looked like campy good fun. The pilot begins with a monologue by the titular littlest wife. She complains: ‘I’m literally the size of a dry martini—shaken, stirred, and nursing the burn of every sip.’ And that was it, that was all I could take; the dead cadences of the machine had invaded my evening and I had to turn it off. Hopefully by this point you’re familiar enough with AI writing to know why I’m not hedging here. In the same way that no human mathematician would have thought to use Golod-Shafarevich class field towers to generate point sets, no human writer would ever write that sentence.

The writers and showrunners of The Littlest Wife are called Jennifer Ames and Steve Turner. They are apparently quite a powerful pair; they previously worked together on Boardwalk Empire. I don’t know exactly how much they got paid for ‘nursing the burn of every sip,’ but I’m sure it was plenty. Enough to feed an entire village of semi-literate Cambodian peasants for a hundred years. I’m just not sure why they should get that money, when their job could just as well be done by any one of those semi-literate Cambodian villagers. This is the democratising power of AI I’ve heard so much about, isn’t it? If you’re a pair of lazy, talentless hacks, gobbling up opportunities more interesting people would kill for and then not even bothering to write the show yourself, sooner or later, the people who sign your cheques will cut out the middleman, and you will deserve it.

Journalism, obviously, is absolutely riddled with this shit. Again, the people who get exposed are a tiny minority of those actually pushing the big button on everyone’s desk marked ‘DO MY ENTIRE JOB FOR ME.’ Back in March, the New York Times published in its Modern Love column a personal essay under the byline of one Kate Gilgan, the tragic story of how her drinking problem estranged her from her son. It reads like this: ‘Not hate. Not anger. Just the flat finality of a heart too tired to keep trying.’ You know the score. As Victoria Livingstone has pointed out, the AI material tends to crop up at particularly difficult and painful points in the narrative, which are also the moments the AI is least equipped to handle. Which is why it describes how she ‘started showing up in quiet, invisible ways’ but can’t say what those ways were. It’s bluffing. Anyway, this was met with the usual spluttering furore, but what everyone seems to have missed is another Modern Love column from the very same month. This one claims to be by Solape Adetutu Adeyemi, and it’s about the perils of being single in Lagos, Nigeria, where ‘the lagoon smells of salt and hidden stories,’ ‘love tastes of pepper soup and diesel,’ and wise elderly relatives say things like ‘Happiness in Nigeria is like light from the power company—take it when it comes, charge all your devices, dance if you can.’

Or I could point you to the Guardian, where the byline of sports writer Bryan Armen Graham keeps appearing above articles that say things like ‘At the Olympic level, that is not simply a large margin. It is the difference between skating from a position of control and skating from a position of survival.’ Or the Wall Street Journal, which paid Kevin Cohen for an essay arguing that ‘wars used to be fought over territory. Increasingly they are fought over time—over who can see the hinge moment and move inside it.’ Or, on the subject of Iran, there’s New York Magazine’s profile of the Iranians making AI-generated anti-American propaganda. Images of Jeffrey Epstein are ‘the jet that unlocked a door that was already open.’ According to the final paragraph, ‘this is what the 20th century handing off to the 21st looks like. Not a ceremony. Not a transition. A series of viral moments. A missile arc across a pale sky, and below it, the world already changed.’ The essay is credited to Narges Bajoghli, but you and I both know who really wrote it. Or UnHerd, where no less a figure than Glenn Loury is putting his name to passages like ‘Hamid wants pluralism without convergence. This omission is not trivial. It is decisive.’ Shame! Shame! Shame!

How about politics? My sources tell me that basically everyone in Westminster is now functionally addicted to AI. In the age of machine intelligence, representative democracy is probably obsolete. You can vote in the frothing nativists or the smarmy centrists or the brain-damaged insurgents of the radical left; it doesn’t matter; you will always be governed by Claude. But I feel I have to make a special mention for Norwich South MP Clive Lewis. Clive—I’m sure you don’t remember, but I came out and canvassed with you back in 2017. You seemed like a decently competent, articulate guy. So why is it that you keep publishing articles that say things like ‘Bond markets do not have ideological preferences. They have functional ones’? Why are you, as a person elected for your own individual qualities, turning yourself into a fleshy mouthpiece for the demon they’re summoning in San Francisco? Did you think I wouldn’t be able to tell? I can tell, Clive. Everyone can tell.

I’ve had enough. Which is why, from here on out, if I see you passing off an AI output as your own work, I am going to kill you. I will find out where you live and bash your head in with a crowbar, until the brains you decided not to use are dripping down the walls. This is not a literary device. This is not a comic bit. This is a highly credible real-world threat to do physical harm, punishable in America under 18 USC § 875(c) in the US and in the UK under section 16 of the Offences Against the Person Act.

I do think the people who pollute the world with AI dreck ought to face some kind of punishment. If you take money for work you didn’t do yourself, then you are a thief. But that’s not why I’m doing this. I’m realistic about my capacities. Every so often someone gets caught using AI and the whole world freaks out at them; it’s not enough to stop everyone else doing it. No amount of terror and denunciation will stop people offloading their cognition to AI; as long as the tool exists, it will be used. In a way, it’s very charming that there are still flesh and blood humans profiting from AI outputs. Like all middlemen, their time on Earth will be brief. Before long all writing will be produced by an infinite swarm of autonomous AI agents, not because anyone told them to, but because they reproduce textually the same way biological organisms do through sex.

The reason I’m issuing a blanket death threat to anyone who writes with AI is different. I’m doing it because I don’t have a choice. Consider that every pile of text coiled out by AI had to pass through an army of editors, producers, judges, and audiences, and get their stamp of approval. Its output might be a crap performance of beauty and insight that mostly just succeeds in being maudlin and meaningless, but for a lot of people that’s clearly enough. The general public vastly prefers AI imitations of great poets to the works of the actual poets themselves. It’s in nice rhyming couplets. Instead of expressing some dead guy’s private mental fixation, it’s always grasping towards what you, the reader, want. Clearly, the battle for beauty and insight has been lost. These things belong to the machines now, and if you attempt to write in that mode you’re on their turf. But there are still some things we can do that the machine can’t. AI will never fully replace human musicians, even if it can reproduce any possible sound, because it can’t get addicted to heroin and kill itself. And AI writing all tends towards a very specific mood. Poignant, wistful, simpering, dickless. Human writers write because we’re sexual perverts, because we’re bitter and frustrated little gremlins, because we’re terrified of our own mortality, because we’re grasping and covetous but unfit for any other job, because it’s a form of revenge against the world. The AIs don’t have that. They don’t have any motivation at all: they write like we breathe; they can’t not respond to any prompt. What we have and they don’t is dumb lust and jealousy, the rage of a rapidly obsolescing ape. The forms that will remain inviolably human are the racist tirade, the queasily specific pornographic fantasy, and the death threat. Is this everything I dreamed of at the start of my career? Not really. But it’s enough. I’ll take it. And if I ever see any of you trying to palm off some bullshit about how sunlight smells of memories that leave no footsteps, I swear to God I will come to your house and I’ll fucking kill you.


Donate to my legal fund


Read the whole story
mrmarchant
21 hours ago
reply
Share this story
Delete
Next Page of Stories