
Why Kids Are Getting Worse at Reading: The Case Against Whole-Language Teaching [Economics from the Top Down]

It’s not even an inability to critically
think.
It’s an inability to read sentences.
When it comes to reading, there is something of a moral panic afoot. In the United States, high-school reading scores are tanking … and everyone seems to know why.
Raised on a diet of internet slop, today’s kids think that ‘reading’ means scanning the captions of a Tik Tok video. For them, books are becoming incomprehensible relics of a waning literate age. In short, literacy is being murdered, and the killer is the smartphone in every child’s hand.
Or is it?
In this essay, I explore a different story about why kids are becoming less literate. It’s not a story about kids getting dumbed down by an addictive new technology. It’s a story about how adults decided to not teach kids how to use a piece of very old technology.
Let me set the stage with a brief parable.

Several millennia ago, humans invented a clever three-step algorithm for encrypting messages. In step one, the user takes a message and decomposes it into a set of distinct sounds. In step two, the user encrypts these sounds into a set of visual symbols. And in step three, the user preserves these symbols on a physical medium.
The purpose of this encryption technology is to transmit meaning across time and space. When another user encounters the encrypted message, they decrypt it by employing the same algorithm in reverse. First, they parse the symbols and convert them into sounds. Next, they parse these sounds and group them into chunks of meaning. Finally, they interpret the decoded message.
With this ancient technology in mind, here is how our story unfolds. For centuries after its invention, the encryption algorithm was used by a small class of administrators who hoarded its secrets. Then, about three hundred years ago, the decryption keys were gradually released to the wider population. Eventually, all children received mandatory decryption training.
But then a funny thing happened. After several generations of formal training, some users began to feel that the decryption algorithm was ‘natural’, and that its intricacies need not be taught. These users created a new approach to training whereby the decryption algorithm was learned through exposure. New users were shown encrypted messages with convenient pictures and cues that elucidated the meaning. The idea was that through repeated exposure, new users would master the technology.
Or not.
After several decades of this new learning regime, scientists found that decryption skills were in decline, and that the drop was biggest among the weakest decrypters. Meanwhile, new communication technology had proliferated, leading to confusion about the loss of decryption skill. Was the new technology to blame? Or was it something else? Opinions flared, but conclusive evidence was in short supply.

Exiting our parable, let’s take stock. In English, the act of encrypting a message is called writing. And the act of decrypting it is called reading. Both acts rely on an implicit algorithm for decomposing linguistic meaning into sounds, and encoding these sounds into symbols. Good readers have mastered this algorithm. Bad readers have not. And today, bad readers have not mastered this algorithm largely because they were not taught how it works. Or at least, that is my contention here.
The backstory is that in the 1980s and 1990s, a movement called the ‘whole language’ approach to reading swept through anglophone schools. According to this new zeitgeist, learning to read was as ‘natural’ as learning to speak. It was a skill that could be learned largely by exposure. Soon this method of ‘vibe-based literacy’ came to dominate elementary-school pedagogy, with devastating results. Yes, some students flourished. But a large portion of kids were simply left behind, destined to be perpetually poor readers. Today, we are living with the consequences.
In this essay, I make the case that the modern decline of high-school reading ability is in large part, due to the spread of whole-language methods. I will build my case in three parts.
In Part I, I review how reading scores have declined among US high-school students. I show how this decline is not uniform, but is instead marked by a widening skill gap. Among US high-school students, the best readers have actually gotten better over time, but the worst readers have gotten far worse. Importantly, this reading-score gap remains visible across a variety of student demographics. Which is to say that whatever is causing the widening gap, it’s not something that government surveys measure.
In Part II, I take a detour into the history of how writing was invented. My purpose is to illustrate exactly why reading is hard to learn, and why students benefit when the requisite skills are explicitly taught. Then I discuss the whole-language movement to not teach these skills — a movement based on a misguided view of what it means to read.
In Part III, I build the case that whole-language instruction is the main cause of the widening reading-score gap. I survey many lines of evidence, perhaps the most important of which is that the reading-score gap can be reversed … by abandoning whole-language methods and teaching structured literacy.
Of course, my goal here is not to exonerate smartphones and other screen devices from wasting kids’ time. Instead, my point is that if we don’t properly teach kids how to read, they have little chance of actually doing it.
Our story begins with a much-discussed piece of evidence. Among US high-school students, reading ability is in decline. Figure 1 shows the trend, as captured by the National Assessment of Educational Progress (NAEP).
Figure 1: The decline of US high-school reading
scores. Since the 1990s, US twelfth-grade students have
seen their reading performance drop on the NAEP standardized test. [Sources and methods]
Looking at this reading-score data, notice that performance drops conspicuously during the 2010s. To many observers, the timing of this drop implicates smartphones, which became popular in the same decade. To be sure, almost no one thinks that smartphones are a panacea for teen literacy (myself included). Still, I see three main problems with the rush to blame declining reading ability solely on phones.
The first problem is that the pandemic probably played a role in worsening reading scores during the latest batch of tests in 2024. (And without this data point, the recent reading-score decline is less conspicuous.) The second problem is that if we stare more closely at the data, we see that the reading-score decline began in the 1990s, long before smartphones were invented. And the third problem is that the decline in reading scores is not uniform among all students. As we’ll soon see, what appears like a universal decline in reading scores is in fact a differential wedge — a widening gap between the best and worst high-school readers.
When faced with a conspicuous trend (like the decline in reading scores shown in Figure 1), a common impulse is to begin searching for the cause. But a wiser approach is to first dissect the trend itself to better understand what’s going on.
In the case of high-school reading ability, the decline in the average US score suggests that reading skills have fallen uniformly across all students. However, when we look beneath the average score, a more complicated pattern emerges — a pattern of widening gaps.
Figure 2 illustrates this reading-score wedge. Here, I’ve taken the trend in high-school reading scores and decomposed the data by reading-score percentile. In this chart, the best readers live at the top, and the worst readers live at the bottom. Looking at the data, what leaps off the page is its lack of uniformity. Among the best students, reading scores have actually improved with time. But among the worst students, reading scores have collapsed. It’s this low-end decline that’s driving the downward trend in average reading scores.
Figure 2: An widening reading-score gap among US
high-school students. Over the last three decades, the
best US high-school students have gotten slightly better at
reading, while the worst students have gotten far worse. This chart
shows the widening achievement gap among selected reading-score
percentiles. [Sources and methods]
Switching to a snapshot of cumulative change, Figure 3 shows how US high-school reading scores have diverged across percentiles between 1992 and 2024. (The vertical axis shows the change in score as a function of reading-score percentile.) The transformation is quite shocking. For students above the 85th percentile, reading scores improved over this period, with the steepest gains at the top. But for students below the 85th percentile, reading scores worsened with time, with the steepest losses at the bottom. In short, over the last three decades, US high-school reading scores have been marked by a widening gap between the best and the worst readers.
Figure 3: Cumulative change in grade 12 reading
scores by percentile, 1992 to 2024. The vertical axis
measures the cumulative change in twelfth-grade reading scores as a
function of reading score percentile (horizontal axis) over the
last three decades. [Sources and methods]
Looking ahead, I’m going to argue that the cause of the widening reading-score gap is something that’s not captured by the federal survey data (collected by the NAEP). To make the case, I am going to segment students into a variety of demographic groups based on characteristics like student sex, parent education, school absences, TV use, and reading habits. Student sex aside, these are characteristics that relate strongly to reading ability. And yet without exception, I find that the reading-score gap — the widening gap between the best and the worst readers — persists within these groups.
Looking at various demographic categories, let’s start with student sex. In recent years, there’s been much worry about the failure of boys. The reading score data supports this worry, but with some caveats.
As Figure 4 demonstrates, over the last three decades, both sexes have seen their worst high-school readers get worse and their best readers get better. However, this widening reading-score gap is more pronounced among males then among females. So the message is not that boys in general are getting worse at reading. The message is that something is driving a wedge between the best and worst readers, and this wedge is thicker among boys than among girls.
Figure 4: The widening reading-score gap occurs
among both sexes. This chart shows the change in
twelfth-grade reading scores between 1992 and 2024, isolated by
student sex. The horizontal axis shows reading-score percentile
within each sex. The vertical axis shows the corresponding change
in test score over the last three decades. Note that the widening
reading-score gap exists within both sexes, but is more severe
among males. [Sources and methods]
Let’s move on to demographic factors that are well known to affect student success. Parent education is a big one. As Figure 5 shows, students with more educated parents tend to be better readers, likely because educated parents care more about their kids’ schooling, and they have more time and money to invest in learning. That said, when we switch to measuring the change in reading scores over the last three decades, a different picture emerges — one in which parent education is largely irrelevant.
Figure 6 shows the pattern. Here, I’ve grouped high-school kids by their parents’ education, and then measured the change in reading scores within each group between 1992 and 2024. The picture that emerges is one of demographic intransigence. Regardless of their parents’ education, the best high-school readers have gotten better and the worst readers have gotten worse.
Figure 5: High-school reading scores by parental
education in 2024. This chart shows the spread in
twelfth-grade reading scores as a function of parental education
(the highest level of education attained by either parent). As
expected, students with more educated parents tend to be better
readers. [Sources and methods]
Figure 6: The widening reading-score gap occurs
within all parental education groups. This chart shows the
change in twelfth-grade reading scores between 1992 and 2024,
isolated by parental education. The horizontal axis shows
reading-score percentile within each parental education group. The
vertical axis shows the corresponding change in test score over the
last three decades. [Sources and methods]
Continuing our demographic journey, kids who miss more school tend to be worse students, likely because school works best if you actually go. So it’s unsurprising that high-school students with more absences tend to be worse readers, as Figure 7 shows. Yet student absences are not what’s driving the widening gap between the best and worst readers.
Figure 8 shows the evidence. Here, I’ve grouped high-school students by their school absences, and then measured the change in reading score between 2002 and 2024. Again, we see a pattern of intransigence. Regardless of school absence rates, the best high-school readers have gotten better, and the worst readers have gotten worse.
Figure 7: High-school reading scores by monthly
school absences in 2024. This chart shows the spread in
twelfth-grade reading scores as a function of the students’
monthly school absences. As expected, students with fewer absences
tend to be better readers. [Sources and methods]
Figure 8: The widening reading-score gap occurs
within all school absenteeism groups. This chart shows the
change in twelfth-grade reading scores between 2002 and 2024,
isolated by students’ monthly school absences. The horizontal
axis shows reading-score percentile within each absenteeism group.
The vertical axis shows the corresponding change in test score over
the last two decades. [Sources and methods]
Now to some demographic characteristics that reflect students’ intellectual behavior. First up is TV use. As we might expect, students who spend more time watching TV tend to be worse readers. Figure 9 shows the disparity in 1998.
So how do TV habits relate to the change in reading score over time? Here, the problem is that the NAEP only surveyed students’ TV habits during the 1990s, so we don’t know much about the long-term trend. That said, the pattern during the 1990s shows similar signs of demographic intransigence.
Figure 10 illustrates. Here, I’ve grouped high-school students by their TV habits, and then measured the change in reading scores between 1992 and 1998. Again, we find a widening gap between the best and worst readers, and we find that the gap is largely unaffected by kids’ TV habits.
Figure 9: High-school reading scores by student TV
use in 1998. This chart shows the spread in twelfth-grade
reading scores as a function of students’ TV use on school
days. As expected, students who watch less TV tend to be better
readers. [Sources and methods]
Figure 10: The widening reading-score gap occurs
within all TV-use groups. This chart shows the change in
twelfth-grade reading scores between 1992 and 1998, isolated by
students’ TV habits. The horizontal axis shows reading-score
percentile within each TV-use group. The vertical axis shows the
corresponding change in test score over the six-year period.
[Sources and methods]
Now to what is perhaps the most obvious trait of a good reader … choosing to actually read. As Figure 11 shows, kids who spend more time reading for pleasure also tend to be better readers. Shocking!
Sarcasm aside, it’s now well established that Americans are spending less time reading during their spare time. And since doing something is the best way to maintain a skill, it follows that if kids are reading less, this lack of practice might make them worse at reading.
Unfortunately, the available evidence shoots down this otherwise plausible theory for why high-school reading scores have declined. When we group kids by their reading habits and measure the change in score over time, we find a widening reading-score gap within all groups.
Figure 12 shows the pattern. Now the caveat here is that this data is limited to the 1990s. (For some reason, the NAEP stopped surveying students about their reading habits at the very moment when time spent reading started to drop precipitously.) At any rate, we can conclude that whatever is driving a wedge between the best and worst readers, it’s likely not their pleasure reading habits.
Figure 11: High-school reading scores by student
pleasure-reading habits in 1998. This chart shows the
spread in twelfth-grade reading scores as a function of
students’ pleasure-reading habits. As expected, students who
read more tend to be better readers. [Sources and methods]
Figure 12: The widening reading-score gap occurs
within all reading-habit groups. This chart shows the
change in twelfth-grade reading scores between 1992 and 1998,
isolated by students’ pleasure-reading habits. The horizontal
axis shows reading-score percentile within each reading-habit
group. The vertical axis shows the corresponding change in test
score over the six-year period. [Sources and methods]
This concludes my tour of the US read-score data. Let me summarize the main results. Over the last three decades, high-school reading scores have declined, but in a non-uniform way. Over this period, the best high-school readers got better, while the worst readers got far worse. And perhaps most importantly, this widening reading-score gap persists across a variety of demographic groups — groups which are well known to affect school outcomes. In short, something is driving a wedge between the best and worst readers, and this driver is not captured by the federal survey data.
Now, it might seem that this lack of survey evidence leaves a world of possible causes. But then again, much is known about how and why kids fail at reading. Indeed, a large body of research shows that when kids struggle to read, it’s usually because they were not taught the low-level skills that are required. And here, the cruel irony is that for the last three decades, many anglophone educators thought it wise to not teach these skills. That’s because they were guided by the whole-language approach to teaching, which preached that reading could be learned largely through exposure.
We’ll get to the spread of whole-language teaching in Part III. But first, we need some prior knowledge. We need to understand how reading works, why it is hard to learn, and why it’s disastrous to not teach kids how to operate the encryption algorithm.
In literate cultures, writing is so ubiquitous that few people realize that it is a form of technology, and a miraculous one at that. Writing is an ingenious technique for encrypting spoken language into visual symbols — symbols that can then be decrypted by another person.
The advantages of writing over speaking are profound. A spoken sentence is gone the moment it is uttered. A written sentence can be preserved indefinitely. A spoken sentence requires a living speaker. A written sentence can be read long after the writer is dead, and in places the writer never imagined. In short, reading and writing come with many advantages over spoken language. But they also have one big downside, which is that compared to speaking, learning to read and write is far more difficult.
There’s a reason for this difficulty — a reason that every grade-school teacher should have plastered on their wall. As the linguist Mark Liberman observes, reading is hard to learn “for the same reasons that writing was hard to invent”. The lesson here is that each time a child struggles to read, they are replicating, in shortened form, humanity’s lengthy struggle to invent the written word.
To get a sense for this formative struggle, realize that humans developed spoken language as early as 135,000 years ago. Yet formal writing dates back a mere 5,000 years. Now, I say ‘formal’ writing, because long before humans encoded words into abstract symbols, we drew pictures that conveyed meaning. For example, more than 40,000 years ago, humans in present-day Spain drew a picture of a bull that is instantly recognizable to anyone today. It is with such pictures that writing begins.
For the first proto-writers, the most obvious way to encode meaning was to draw an image of the thing they had in mind. To elicit the idea of a bull, they drew a bull. To elicit the idea of a snake, they drew a snake. And so on. Now, the intriguing part is that even today, drawing pictures remains the most obvious way to encode meaning.
For example, if you show a toddler a picture of a snake, they’ll happily shout ‘snake’. Indeed, using this image-based method, a toddler will happily decrypt the meaning of pictographs that are thousands of years old. (See Figure 13 for some ancient Egyptian examples.1) But note what the toddler will not do. When shown the word ‘snake’, the toddler will not shout ‘snake’. And they will not do so for the same reason that humans found it difficult to move from pictographs to more complex forms of writing. The path forward was not obvious.
Figure 13: Pictures are the most obvious path to
writing. Here is a collection of Egyptian pictographs that
are easily decoded by a modern observer. (Fun fact: these symbols
are available as Unicode characters.) Note that I use the word
‘pictograph’ to refer to the literal meaning of each
symbol. Egyptian ‘hieroglyphs’ are more complicated
because they use the rebus principle to attach linguistic sounds to
symbols.
For early writers, the hurdle was to somehow use pictures to encode messages that went beyond one-word statements like ‘bull’ or ‘snake’. For example, how would you use pictures to write this sentence?
The farmer went to the market, sold his bull for $1000, invested the money in a Trump memecoin, and then went bankrupt.
Given the immense temporal gap between simple picture drawing and formal writing, we can infer that ancient humans struggled greatly with this problem. But they eventually discovered a good solution, which was to use pictures in a more abstract way. Instead of using pictures to represent real-world things, they used pictures to represent linguistic sounds.
This method is called the ‘rebus principle’, and it works as follows. To encode a message that has no simple associated image, we first decompose the message into sounds. Then we map these sounds onto a set of simple images. For example, if we combine the image of a bee and a leaf (as shown in Figure 14), we can use the rebus principle to encode the English word ‘belief’. Clever!
Figure 14: The rebus principle — using symbols
to encode linguistic sounds. Linguists believe that the
use of the rebus principle is a crucial step for the development of
writing. With the rebus principle, one interprets images in terms
of the linguistic sounds they represent (rather than the literal
objects being displayed). In English, the symbols of a bee and a
leaf can combine to represent the word ‘belief’.
Now, to the modern (literate) observer, the rebus principle seems both intuitive and obvious. After all, it’s the principle that underpins how we read and write. (More on that in a moment.) And yet, for the first proto-writers, the rebus principle was unintuitive. Why?
Well, the problem seems to be that for humans, speaking is so effortless that we have little knowledge of how we do it. Yes, we speak by making sounds … but it is the meaning of these sounds that we say and hear. Indeed, we have almost no conscious knowledge of the sounds themselves. Or put another way, our brains naturally clump meaning into spoken units called ‘words’. But our brains find it quite foreign to consciously decompose these words into meaningless sounds. Yet the task for the first writers was to do just that — to reverse engineer what our brains do subconsciously. By all accounts, early writers found this task difficult. And to this day, children struggle to read largely because they struggle to decompose the sounds within words.
At any rate, once the rebus principle was discovered, it allowed writing systems to evolve in two different ways. First, the symbols themselves tended to become more abstract with time. The effect of this abstraction was to simplify the act of writing, but to make learning how to read more difficult.
Second, the rebus principle allowed writers to explore the phonetic level at which to encode their language. Here, we might think that alphabetic writing would be the most obvious path forward. But it was not. The alphabetic system was the least obvious approach to writing.
To the oral speaker, the natural unit of meaning is the individual word. Hence the most obvious way of writing was to equate symbols with whole words. This ‘logographic’ system works perfectly well, and is the basis for Chinese writing.
The next step down the sound ladder is to use symbols to encode individual syllables. This ‘syllabic’ approach is the basis for Japanese writing.
Finally, the lowest step down the sound ladder is to use symbols (an alphabet) to encode individual ‘phonemes’, which are the smallest unit of linguistic sound. The advantage of this ‘alphabetic’ approach is that it is by far the most efficient encoding method, requiring the user to memorize the least number of symbols. 2 However, the disadvantage, as Mark Liberman observes, is that alphabetic writing places a “special burden” on the reader, since it requires that they gain conscious access to the lowest unit of linguistic sound — a unit that is “relatively inaccessible to introspective scrutiny”.
It is likely because of this “special burden” that whereas logographic and syllabic forms of writing evolved multiple times in different places, alphabetic writing seems to have evolved only once. It arose out of the Semitic tradition, which developed a consonant-only system of writing. When the ancient Greeks later borrowed these symbols, they adapted some of the letters to notate vowels. All modern alphabets seem to have sprung from this singular lineage.
The point is that when children struggle to read alphabetic writing, they are in good company. Alphabetic writing is the least obvious way to store linguistic meaning. And it is also the writing method that is most susceptible to corruption.
For example, in modern English, there are nine different ways to encode the long ‘a’ sound (as in halo, aid, ate, say, they, rein, great, eight, and straight). Who invented this absurd system? No one did. These different notations evolved from older phonetic principles that have since been corrupted, as pronunciation changed but spelling did not. Thus, English is littered with silent letters that were once pronounced (as in ‘knight’), homonyms that once had distinct pronunciations (as in ‘meat’ and “meet”), and a myriad of ways to spell the same sound.3
No one would design such a convoluted system by choice. And yet, it is the system that English children must learn. We fool ourselves if we think it is easy or ‘natural’.4 And we doubly fool ourselves if we think that children can deduce the principles behind English phonetic encoding without explicit instruction.
To summarize our foray into the history of writing, reading is difficult to learn because it requires developing a set of low-level skills that are not intuitive or natural to the oral speaker.
Now, the tyranny is that for a good reader, these low-level skills have become so automatic that they are subconscious. Hence, a good reader might think it reasonable to teach a child to read without giving explicit instruction on the principles involved. This form of teaching is a strikingly bad idea; and yet it is the method that dominates anglophone schooling.
More on that in a moment. But first, let me convince you (a good reader) that you have a set of low-level decoding skills that are largely subconscious. Go ahead and read the following words aloud:
As you read, you no doubt realized that these are not English words. They are pseudowords that are assembled using the principles of English phonetics. (You can generate more pseudowords here.)
The purpose of these pseudowords is to illustrate that good readers have internalized the low-level principles behind English phonetic encoding. Good readers understand how letters combine to represent sounds, and how these sounds can be combined into words (real or not). Of course, the corollary is that bad readers lack these low-level skills. Which is why, when faced with pseudowords, bad readers fall flat on their face.
With this failure in mind, here is the trick to bad reading instruction: ask students to read without teaching them the decryption key.

To describe a lesson in bad reading instruction, it seems only fair to use myself as an example. When my daughter started school, she was enrolled in French immersion, which meant that she’d learn to read French at school and English at home. Her home-school teacher would be me … Blair Fix, PhD & VGR (very good reader).
Now, at the time, I’d bought into the whole-language approach to reading instruction.5 Forget phonics, I thought. We’ll just start reading together, and my daughter will naturally pick things up. But she didn’t. So with the benefit of hindsight, let me illustrate how things went wrong.
Our first step was to read simple picture books like the one shown in Figure 15. These books are called ‘levelled readers’, and they’re meant to be co-read, with prompts from the pictures. First, I’d read the book. Then my daughter would ‘read’ it back to me. Things seemed to be going well … or so I thought.
Figure 15: Teaching children how to avoid
reading. This is an excerpt from the book First Little Readers – What Is Red? It
is typical of the levelled-reader format. Note the repetitive
sentence structure, which can be easily memorized and recited based
on cues from the pictures. Note also the difficulty of the actual
decoding task. In this supposed ‘Level A’ reader, kids
are asked to decode the words ‘apples’ and
‘strawberries’ — words that are phonetically
complicated. In short, this book practically begs children to
not read the text, and to instead recite the message from
pictographic cues.
What I realize now is that these levelled readers actually teach children how to avoid reading. Again, the history of writing is instructive as to why. To develop alphabet writing, people had to realize that linguistic meaning (i.e. words) could be broken down into sounds, and that these sounds could be encoded into symbols:
Learning to read therefore involves the reverse operation. The learner must take symbols, map them onto sounds, and decode the meaning:
Looking at levelled readers, these books make no attempt to teach the reading decryption algorithm. Instead, they take a repetitive sentence structure and map it onto a set of richly illustrated images. Of course, kids love this format, because it provides a far more obvious path for encoding meaning. Indeed, it is the same path taken by the first writers, who took meaning and mapped it onto pictures:
When we ask a child to ‘read’ an illustrated (levelled) reader, they naturally take the easiest path by decoding the message from the picture:
Now, the problem here is that asking a child to decode meaning from pictures actively misleads them about how reading actually works. Historically, the path from pictographs to alphabetic writing was long and torturous. Indeed, the path was so difficult that it happened only once. Hence, it is completely unreasonable to request that a child use pictographs as a tool for deducing alphabetic principles. Many children will not make this conceptual leap.
Instead, when children are shown pictographs with associated text, what tends to happen is that they memorize a few of the simpler looking words, and then they recite (or simply guess) the rest of the words from the context (which includes the picture and the repetitive sentence structure). Unsurprisingly, researchers have observed this guessing behavior countless times. The strategy occurs because actually reading the words on the page is the hardest and least intuitive option for decoding meaning. Guessing the message from the pictures and the context is far easier. And so that’s what kids do.
With word guessing in mind, here is where things get weird. When whole-language theorists observed children’s guessing tactic, they interpreted it as a learning strategy. Indeed, they enshrined it in a pedagogical approach called the ‘cueing method’, in which children are taught to read text by looking first to the picture, next to the syntactic context, and last to the actual word.
In short, the whole-language method took a reading avoidance tactic (guessing words from context) and transformed it into a ‘strategy’ for learning how to read. As you might guess, the effect of this strategy is to leave the worst readers behind.
The irony of whole-language pedagogy is that when it swept through anglophone schools in the 1980s and 1990s, cognitive scientists were codifying the best practices in reading instruction. Suffice it to say that these best practices are not what whole-language theory preaches.
In a nutshell, cognitive scientists discovered that kids struggle to read for the same reason that humans struggled to develop writing. For the oral speaker, it is unnatural to decompose words into sounds. Hence, kids who struggle to read typically lack ‘phonemic awareness’ — they do not hear the sounds within words. And so the solution is to teach this skill. Teach kids that English words are built from a repertoire of several dozen sounds. Teach kids how to segment words into sounds. Teach kids how sounds map onto the alphabet. Yes, this instruction is low-level work. But for young children, it is exciting new knowledge. They love it!
Once kids grasp the basics of how the alphabet represents sounds, they’re ready to read three-letter words like ‘sit’ and ‘hat’. Next, they can read these words in simple sentences. Crucially, the practice reading must lack picture cues, because pictures provide a way to avoid the cognitively demanding task of decoding words. (Figure 16 shows a sample reading task from Treasure Hunt Reading, a free structured literacy program.)
Figure 16: A typical reading task in a structured
literacy program. In this example from Treasure Hunt Reading, kids are asked to form and read
simple three letter words with a repeating phonic pattern. Notice
that this task comes on page 40 of the workbook, after the required
consonant and vowel sounds have been taught.
Finally, reading ability can be built iteratively by adding new sounds and new ways to encode each sound. (Remember, English is a phonetic mess.) At each step, kids read text that obeys only the phonetic principles that they’ve been taught. And because kids have been taught the skills for success, something surprising happens. They learn to read!
This evidence-backed approach to reading instruction is called ‘structured literacy’, and it should be standard practice in every elementary school. But it is not. Instead, the dominant approach (at least until recently) has been to shower kids in text and hope that they deduce the key for decryption. Many kids fail to make this deduction, and they grow up to be life-long dysfunctional readers.
Now that we understand why reading is hard to learn, I want to build the case against whole-language pedagogy. I’m going to argue that whole-language teaching is the main wedge that’s widening the gap between the best and worst high-school readers.
My case rests on seven lines of evidence, listed below. At root, my argument is simple. If we do not teach kids the code for decrypting English words, it is the worst readers who suffer, with effects that last a lifetime.
The first piece of evidence implicating whole-language methods in the widening reading-score gap is the fact that these methods are ubiquitous. For example, a 2019 survey found that 75% of US K-2 teachers taught the ‘three cueing’ method for deducing words from their context — a method that mistakenly reinforces the evasion tactic that struggling readers use to avoid decoding words.6:
Now, the good news is that in the last few years, the cueing method has grown increasingly unpopular, and has even been banned in 15 US states. But the bad news is that for today’s high-school students, the damage has already been done.
The second piece of evidence implicating whole-language instruction in the widening reading-score gap is the fact that this method harms struggling readers.
That was the conclusion drawn from a large study of the ‘Reading Recovery’ program, which is a whole-language intervention designed to bring below-grade-level readers up to speed. In this study, a large group of struggling first-grade readers received intensive one-on-one instruction from a Reading Recovery expert. The students’ progress was then tracked over time and compared to a group of struggling readers who did not receive an intervention.
In 2017, the researchers reported that the initial intervention was a success: by the end of their tutoring, the Reading Recovery students were doing substantially better than their peers. Then came the cold water. When the researchers returned to track student progress a few years later, they found a strikingly different pattern. By third and fourth grade, the students who’d participated in the Reading Recovery program were not ahead of their peers … they were between a half to a full grade level behind.
Although the researchers struggled to explain this negative effect, the problem seems obvious in hindsight. Whole-language methods promote the wrote memorization of words, which is an effective strategy when the vocabulary is small. But as the reading material gets more complex, memorization methods fail, and the students’ decoding deficit rears its head. And because whole-language instruction actively dissuades students from learning how to decode words, their decoding deficit grows worse with time.
The third piece of evidence implicating whole-language instruction in the widening reading-score gap is the fact that the timing checks out. It was in the mid-1980s when whole-language instruction began to spread. And it was in the mid-1990s when high-school reading scores began to drop. If we add a decade delay to allow the first whole-language recipients to advance through school, we’d expect to see the high-school effects of this method appear during the mid-1990s … just when high-school reading scores began to drop.
Of course, we don’t have rigorous data that tracks the spread of whole-language methods. But we can get a rough sense for the popularity of this approach by tracking the frequency of the phrase ‘whole language’ within English books. When we do so, we find that the phrase became popular in the 1980s. The top panel in Figure 17 shows the pattern. If we suppose that this word frequency indicates the popularity of whole-language instruction during the early years of schooling, we’d expect to see the high-school effects of these methods appear about a decade later, during the mid-1990s (dashed curve).
Figure 17: The whole-language impulse. The
top panel shows the frequency of the phrase ‘whole
language’ in the Google English corpus (a large sample of
English books). The dashed-red line shows this frequency with a ten
year delay, used to indicate the potential high-school effects of
whole-language education on those who endured it during the early
years of schooling. The bottom panel shows the frequency of the
phrase ‘balanced literacy’, which became a common
euphemism for whole-language methods (such as the three-cueing
strategy). The dashed-blue line shows this frequency with a ten
year delay. [Sources and methods]
Now, by the mid-2000s, the term ‘whole language’ had become less fashionable, in large part because the reading wars had prompted a backlash against this (ineffective) approach. But instead of being abandoned, whole-language methods were simply rebranded as ‘balanced literacy’. And judging by the frequency of this latter phrase (shown in the bottom panel of Figure 17), balanced literacy became prominent during the mid-2000s, with a second wave of popularity during the mid-2010s. If we add a ten-year delay to this pattern, we find that the high-school effects of balanced literacy should appear within the last decade.
In short, if whole-language methods are behind the widening reading-score gap that’s appeared over the last three decades, the timing checks out.
The fourth piece of evidence implicating whole-language instruction in the widening reading-score gap is the fact that learning during the first few years of school determines success later on.
For example, a 2010 study of 26,000 Chicago elementary school students found that reading levels in Grade 3 strongly predicted high-school graduation rates. Among third-grade students whose reading was below grade level, only 44% would later graduate from high school. But among third-grade students whose reading was above grade level, 79% would later graduate from high school. The portion of kids going to college showed a similarly stark gap, as illustrated in Figure 18.
Figure 18: Third-grade reading ability strongly
determines success during high school and beyond. In the
mid-1990s, Chapin Hall researchers measured the reading
ability of a cohort of third-grade students in the Chicago Public
Schools system. Then they tracked student progress over time. The
researchers found that high-school graduation rates and college
attendance were both strongly determined by reading ability in
grade three, as shown here. [Sources and methods]
The fifth piece of evidence implicating whole-language methods in the widening reading-score gap is the fact that by downplaying decoding skills (and encouraging students to guess at words), the approach likely creates a compound reading failure.
To understand this effect, realize that reading comprehension is the product of two distinct skills. Reading comprehension depends firstly on the ability to decode words. And it depends secondly on oral comprehension. According to the ‘simple view of reading’, reading comprehension is the product of these two abilities:
Now in principle, decoding skill is separate from oral comprehension, which is why someone can be fluent but illiterate. That said, in literate cultures, oral comprehension tends to be a function of decoding ability itself. And that’s because writing is the most potent source of knowledge.
Simply by reading, a good decoder can learn about new words and new ideas, causing their oral comprehension to grow with time. In contrast, a poor decoder struggles to unlock the knowledge contained within books, which means that their oral comprehension remains stunted. But here is the kicker. Because reading comprehension depends on the product of decoding and oral abilities, poor decoders suffer a compound failure. Their poor decoding hinders their oral comprehension, and so their reading comprehension suffers doubly.
Figure 19 shows an example of this compound failure. The data comes from a longitudinal study of 485 students in Iowa and Illinois, whose school progress was tracked throughout 1990s. The chart illustrates how students’ vocabulary depended on their decoding skills, which were measured in grade 4. (Vocabulary is a crude proxy for oral comprehension.) Over time, students’ vocabularies tended to increase, but not at the same rate. Instead, the best fourth-grade decoders had the greatest vocabulary growth, while the worst fourth-grad decoders had the least vocabulary growth.
Figure 19: Poor decoding skills lead to a stunted
vocabulary. In the 1990s, Dawna Duff and colleagues tracked vocabulary
growth among a cohort of American students. This chart shows how
vocabularies grew as a function of decoding ability, measured in
fourth grade. While all students saw their vocabularies increase
with time, the poor decoders saw the least growth. Assuming that
these poor decoders retained their decoding deficit throughout
school, by high school they would suffer from a compound reading
failure, with worse decoding skills and a smaller
vocabulary. [Sources and methods]
If the poor fourth-grade decoders retained their decoding deficit as they aged (a reasonable assumption), we can surmise that by high-school, they suffered from a compound failure: both their decoding and their oral comprehension lagged behind their peers, leading to significantly worse reading comprehension. In short, to the extent that whole-language instruction hinders the development of decoding skills, we expect that by adulthood, it creates a compound failure of reading comprehension.
The sixth piece of evidence implicating whole-language methods in the widening reading-score gap is the fact that decoding deficits are not solely a childhood problem. They typically remain present well into adulthood.
True, poor decoders often develop coping skills for parsing text — skills like memorizing sight words and guessing unfamiliar words from their context. Unfortunately, these coping strategies do not solve the core decoding deficit, which remains visible to anyone who cares to look.
The way to unearth a decoding deficiency is ask people to read pseudowords — fake words that are constructed from real English phonetics. When tasked with parsing such words, poor readers reveal their core deficit: they have not mastered the principles of English phonetics.
Figure 20 shows a striking example of this deficit. The data comes from research conducted by Molly Minus during the 1990s. As part of her PhD research, Minus measured decoding ability among three groups of adults:
Minus found stark differences between these groups. When tasked with reading 50 pseudowords, the university students got almost all of them correct (top panel). The college students faired worse (middle panel). And the prisoners? Well, they were abysmal, getting an average of 8 words correct (bottom panel).
The point here is that well into adulthood, the main driver of functional illiteracy is the inability to decode words — an inability that whole-language teaching actively promotes.
Figure 20: Decoding ability among three groups of
adults. In the early 1990s, Molly Minus measured
decoding skills among three groups of adults: upper level
university students (top panel), college students in remedial
reading courses (middle panel), and prisoners receiving reading
instruction (bottom panel). This chart shows the distribution of
decoding scores within each group. (The task was to read fifty
pseudowords.) Minus found that decoding skill varied predictably by
group. The university students were excellent decoders, while the
prisoner were horrible. [Sources and methods]
Now to what is perhaps the key piece of evidence implicating whole-language teaching in the widening reading-score gap. It seems that this growing gap is not inevitable, and that it can be reversed by dumping whole-language methods and replacing them with structured literacy. Interestingly, we can thank the state of Mississippi for demonstrating this fact.
Perpetually the poorest US state, Mississippi once produced some of the nation’s worst readers. As recently as 2013, Mississippi’s fourth-grade reading scores were in last place. Yet by 2024, it had turned things around and was among the top ten states. Figure 21 shows the transformation.
Figure 21: The Mississippi miracle. This
chart shows Mississippi’s state rank in fourth-grade reading
scores. (Note the reverse scale on the vertical axis.) For decades,
Mississippi sat at the bottom of the reading-score heap. But after
2013, it clawed its way into the top ten — a remarkable
transformation that’s often dubbed the ‘Mississippi miracle’. [Sources and methods]
So what happened? Did Mississippi suddenly get rich? Did its children stop watching TV? No and no. What happened is that in 2013, Mississippi overhauled how it taught kids to read.
To make sense of this overhaul, realize that in the 1990s, Mississippi followed other states in embracing the whole-language approach to reading. Curriculum documents from the time illustrate the educational dogma. In 1996, Mississippi’s Department of Education declared that among first-grade students, “[r]eading and writing are no longer viewed as isolated tasks to be taught and tested”. Then, as if to foreshadow what would follow, the document argues for a “harmony” of strategies as students “attempt to understand how reading and writing work” (my emphasis).
It’s with this possibility for failure that we should interpret the patterns in Figure 22. In the top panel, I’ve plotted the change in Mississippian fourth-grade reading scores between 1992 and 1994 (measured as a function of reading-score percentile). Notice the Z-shaped trend: over this period, a widening gap emerged between the best and worst readers. Well that’s curious. That’s the same type of gap that emerged among US high-school students over the last three decades. (See Figure 3.). Perhaps Mississippi’s embrace of whole-language methods is telling us something.
Figure 22: Mississippi’s widening and then
narrowing reading-score gap. This chart shows the change
in Mississippian fourth-grade reading scores as a function of
reading-score percentile, captured during two different eras. The
top panel shows the reading-score change between 1992 and 1994, an
era when the state was rapidly adopting whole-language methods.
Over this period, a widening reading-score gap emerged, with the
best fourth-grade readers getting better, and the worst readers
getting worse. In contrast, the bottom panel shows the
reading-score change between 2011 and 2019, an era when the state
abandoned whole-language methods and implemented a
structured-literacy approach to reading instruction. (I’ve
halted the data in 2019 to avoid any pandemic-related artifacts.)
Over this period, the reading-score gap narrowed significantly.
While all fourth-grade readers improved, the best readers improved
the least, while the worst readers improved the most. [Sources and methods]
Now let’s look at the bottom panel in Figure 22, which plots the change in Mississippian fourth-grade reading scores from 2011 to 2019. Notice that the pattern looks starkly different than the one above. During the 2010s, all fourth-grade Mississippian readers improved. However, the worst readers improved the most, while the best readers improved the least.
What caused this reverse effect? Fortunately, we know exactly what happened. In 2013, Carey Wright became Mississippi’s state Superintendent of Education. A proponent of evidence-based instruction, Wright oversaw a massive change in how Mississippi taught reading. Whole-language methods were abandoned and replaced with a focus on systematic phonics and phonemic instruction. The new approach included extensive support for teachers, funding for the early detection of reading problems, and (most controversially) a ‘third-grade gate’, which required that all third-grade students pass a mandatory reading test before proceeding to the next grade.7
The results of this teaching experiment were nothing short of dramatic. Mississippi’s fourth-grade reading scores were vaulted from worst in class to among the top ten. But more interesting, in my view, is the structure of this ‘Mississippi miracle’ — the fact that it targeted the worst readers and helped them the most. Mississippi’s experiment strongly suggests that the widening skill gap between the best and worst high-school readers is not inevitable, and that it’s been driven by whole-language pedagogy — a teaching approach that systematically fails the worst readers.
When parents send their kids to school, they no doubt assume that the teacher uses the best methods for instruction, much as a patient assumes that their doctor uses the best forms of medicine. Unfortunately, if the history of science tells us anything, it is that best practices are not guaranteed.
The problem is that once a flawed practice becomes institutionalized, it is difficult for the practitioner to discern that their method is unsound. If you practice only what your mentor preached (and you’re surrounded by others who do the same), the failure of your method becomes invisible. Which is why doctors practiced bloodletting for centuries, yet were oblivious to the fact that it tended to kill their patients.
It’s within this context that we should interpret the whole-language movement. It promoted a flawed teaching method that, once institutionalized, became invisible to its practitioners. When children did learn to read (despite their poor instruction), it was proof that the method worked. And if the child failed, they were just ‘slow learners’ who’d eventually get the gist of reading. In short, it was the method that succeeded, but the individual child who failed.
Still, there’s the question of how such a flawed practice managed to become a tradition. Did whole-language teaching become popular because it contained a kernel of truth? I think the answer is no. The whole-language approach became popular because it told a story that people wanted to hear. Whole-language theory sold the idea that learning to read is as natural as learning to speak. The message, then, is that the teacher can empower their students largely by getting out of the way. So forget lectures. Forget drills. Forget explicit instruction. Just give kids a chance to explore great literature, and they will naturally learn how to read.
To grasp the appeal of this idea, we must understand the context in which it emerged. Prior to the 1960s, anglophone schooling was a dictatorial affair. It was a place where the teacher was a sergeant and the kids were compliant enlistees. It was an environment that did not exactly stimulate high-minded thinking. It was this dictatorial environment that whole-language proponents rejected. They sold (and still sell) their approach as a “democratic” and “humanistic” method that empowers “teachers and students alike”. In short, the spread of whole-language teaching had more to do with political ideals than with any evidence that the method was sound.8
Now, the irony is that although whole-language methods were billed as a tool for empowering all children, what they actually did was to empower the best students — the kids who learned to read effortlessly, and who benefited from have time (and resources) to practice their skills. But for the kids who struggled to decode words, the whole-language environment was downright confusing, since they were being asked to ‘practice’ a task that they found bewildering. It was the equivalent of giving a ten-year old integral calculus and saying “Do the math, kid. I’m empowering you by not teaching you how it works.”
Of course, the failure of whole-language methods doesn’t mean that wrote dictatorial teaching is the way to go. It is not. The real message is that higher-level abilities do not come from the ether; they depend on the mastery of lower-level skills.
Great jazz musicians improvise effortlessly because they’ve internalized low-level skills like scales and chord progressions. Great mathematicians produced abstract proofs because they’ve mastered the low-level skills behind arithmetic and algebra. Great writers produce compelling literature because they’ve been taught the low-level mechanics of their language. And good readers can parse text accurately and rapidly because they grasp the low-level algorithm of how symbols encode linguistic sounds.
In each case, choosing to not teach these low-level skills isn’t ‘democratic’. It isn’t ‘humanistic’. It is the definition of regressive. Choosing to not teach low-level skills is a recipe for selecting the least gifted students and systematically leaving them behind. It is a recipe for producing the outcomes we now observe … a widening gap between the best readers and the worst readers.
Of course, the evidence against whole-language teaching does not get smartphones and algorithmic slop off the hook for polluting our social environment. But then again, when kids struggle to merely decode words, they have little reason to get off their phones and actually read.
Hi folks, Blair Fix here. I’m a crowdfunded scientist who shares all of my (painstaking) research for free. If you think my work has value, consider becoming a supporter. You’ll help me continue to share data-driven science with a world that needs less opinion and more facts.
Sign up to get email updates from this blog.

This work is licensed under a Creative Commons Attribution 4.0 License. You can
use/share it anyway you want, provided you attribute it to me
(Blair Fix) and link to Economics from the Top
Down.
If you are teaching a child to read (or write), here are some helpful resources:
US reading scores
All US reading-score data comes from the NAEP and can be browsed here: https://www.nationsreportcard.gov/ndecore/landing
Data series are as follows:
Inferring the quantile function for reading scores
The most fine-grain data provided by the NAEP consists of ‘distribution percentages’ — the percentage of students with reading scores within a given ten-point range. To work with this data, I smooth it using a spline function.
Figure 23 shows my approach. Here, the points show the empirical data from the NAEP. Each point is located at the midpoint of the reading-score bin, and shows the percentage of students within each bin. To infer the smoothed distribution behind this binned data, I interpolate between data points using a spline function (the curve in Figure 23). I then treat this curve as a probability distribution for reading scores.
From this estimated probability distribution, I then infer the quantile function, which consists of reading scores as a function of reading-score percentile. Figure 24 shows the inferred quantile function for all US grade 12 students in 2024. Once I’ve created the quantile functions for all of the desired data (various years and various demographic groups), I use these functions to estimate changes in percentile score over time.
Figure 23: Distribution of US grade 12 reading
scores in 2024. This chart illustrates my method for
smoothing the ‘distribution percentages’ data provided
by the NAEP. The empirical data consists of binned values reporting
the portion of students with reading scores within a given
ten-point range. Here, blue points show this empirical data, with
the point placed at the midpoint of each reading-score bin. To
estimate the complete distribution beneath this binned data, I
interpolate between points using a spline function, as illustrated
by the curve. I then treat this curve as probability distribution
for reading scores.
Figure 24: The inferred quantile function for US
grade 12 reading scores in 2024. This chart shows inferred
(smoothed) values for US grade 12 reading score as a function of
read-score percentile. To construct this quantile function, I use
the estimated probability distribution from Figure 23.
I then use this smoothed quantile function to estimate changes in
percentile reading score over time. (These changes are not shown
here.)
Word frequency (Figure 17)
Data for the frequency of ‘whole language’ and
‘balanced literacy’ is from the Google Ngrams dataset,
downloaded with the R package ngramr.
High-school graduation rates by third-grade reading ability (Figure 18)
Data comes from Figures 4 and 5 in the report ‘Third Grade Reading Level Predictive of Later Life Outcomes’, by Lesnick, Goerge, and Smithgall. The study tracks a large cohort of Chicago Public Schools students as they progress through school. (To work with this data, I digitized it using Engauge Digitizer.) Note that Lesnick and colleagues define reading grade level as follows:
Vocabulary growth as a function of decoding skill (Figure 19)
Data is from Figure 2 in the paper ‘The Influence of Reading on Vocabulary Growth: A Case for a Matthew Effect’ by Duff, Tomblin, and Catts. The study tracked the progress of 485 children in Iowa and Illinois, beginning in 1993. Note that what I call ‘decoding ability’, Duff and colleagues call ‘reading ability’. But what they actually measure is the fourth-grade ability to decode pseudowords and selected sight words. (To work with this data, I digitized it using Engauge Digitizer.)
Adult decoding ability (Figure 20)
Data is from Figures 6, 7, and 8 in Molly Minus’ paper ‘The Relationship of Phonemic Awareness to Reading Level and the Effects of Phonemic Awareness Instruction on the Decoding Skills of Adult Disabled Readers’. (I digitized the data with Engauge Digitizer.)
Note that Minus also measured ‘phonemic awareness’ in her three sample groups. (Phonemic awareness is the ability to identify the sounds within words.) As with decoding ability, she found that phonemic awareness varied starkly between groups, as shown in Figure 25. This evidence reinforces the standard scientific picture of reading. Good readers can parse the sounds within words. Bad readers cannot.
Figure 25: Phonemic awareness among three groups of
adults. This chart shows Molly Minus’s measurements
of phonemic awareness (the ability to decompose the sounds within
words) in three samples of adults. Data is from her Figures 10, 11,
and 12 in Minus (1992). Note the large disparity between
prisoners and university students.
Intriguingly, Egyptian hieroglyphs illustrate a key downside of
the rebus principle, which is that the symbols can only be
deciphered if the reader has knowledge of the spoken language being
encoded. For example, to the French speaker, the image of a bee and
a leaf (Figure 14)
would not elicit the concept of ‘belief’
(‘croyance’ in French). It is because of this oral
dependence that the Egyptian hieroglyphs spent thousands of years
as unintelligible nonsense. When the ancient Egyptian dialect died
out, no one had a clue what the surviving symbols meant. The key to
decoding these messages came only in 1799, with the discovery of
the Rosetta stone — a tablet that contained
identical messages encoded in Greek, hieroglyphic Egyptian, and
demotic Egyptian.
︎
To enter non-alphabetic characters on a computer, the solution
is invariably to use the Latin alphabet, at least in part, to
phonetically type the desired non-alphabetic symbol. (See, for
example, the pinyin system for typing Chinese symbols.) Hence, it
seems unlikely that we could have modern computers without the
alphabet.
︎
︎
︎At any rate, the book made two arguments that, at the time, I found convincing. First, the author noted that when children are faced with an unfamiliar word, their first instinct is to guess at the word from the context. Kids’ last instinct is to actually sound out the unknown word. Second, the author noted that English phonics are a complicated mess, with very few rules that are exception free. Hence teaching this mess, he argued, is a waste of time. It’s better to focus on building kids’ bank of memorized words.
What’s embarrassing is that I found these arguments convincing, even though the author provided zero evidence for the efficacy of his proposed approach. Let’s run through the problems.
First up is the argument that kids avoid decoding words. This observation is true, but is now recognized to be an avoidance tactic. Decoding words is difficult, and so kids tend to avoid the task, especially if they’ve not been taught the principles to actually read the word in question.
Second, it is true that compared to languages like Arabic and Finnish, English is a phonological mess. But what scientists now recognize is that the complexity of English orthography means that more (not less) time must be spent giving kids explicit and systematic phonics instruction.
Third, the idea that memorizing words is easier than memorizing phonetics is pure silliness based on borderline innumeracy. A quick look at structured literacy programs shows that they teach at most about 100 phonological principles. In contrast, the English language contains at least 460,000 words. So if you’re going to defend the wrote memorization of words, you’re defending a task that is 5,000 times more expansive.
Back to my brief acceptance of these arguments. I found the
whole-language approach convincing for understandable (but
mistaken) reasons. The arguments sounded plausible … from the
standpoint of a literate adult who had long since become unaware of
his low-level decoding skills. Of course, when I tried to put
whole-language methods in action to teach my daughter, they failed
badly. It was only in the face of this failure that I bothered to
do some actually research, and learned the folly of my beliefs. (I
discovered the science of reading by googling the word
‘dyslexia’. That led me to Sally Shaywitz’s
excellent book Overcoming Dyslexia, which lays out
the reasons why struggling readers need explicit phonics
instruction.)
︎
︎Perhaps the most innovative approach comes from the
‘Success for All’ program, described in Episode 12 of the podcast Sold A Story. In Success for All program, the entire
school has a shared reading-instruction block, in which students
are grouped by reading ability and not by grade. This ability-based
streaming allows teachers to ramp up the intervention for kids who
are falling behind. In short, the goal is to make it impossible for
kids to fall behind in reading. I think the logic here is
impeccable. Decoding skills must be mastery based. If kids do not
get the basics of decoding, everything else should be put on hold
until they master this skill.
︎
For well over half a century the far right has used a campaign for phonics to elect ultraconservative school board members and attack both public education and teacher education.
Goodman is also keen to cast cognitive scientists as partisan hacks who are the enemy of good teachers:
Their “true science” can produce “research-based programs.” The far right can concentrate on keeping pressure on politicians and administrators at all levels, on being ready to pack a hearing room or school board meeting, while the disinformers and “scientists” push the “truth” on teachers and administrators.
One gets the feeling that when Goodman is faced with empirical
evidence that contradicts whole-language theory, he responds by
vilifying scientists. It’s not a good look.
︎
Bentz, C., & Dutkiewicz, E. (2026). Humans 40,000 y ago developed a system of conventional signs. Proceedings of the National Academy of Sciences, 123(9), e2520385123.
Bone, J. K., Bu, F., Sonke, J. K., & Fancourt, D. (2025). The decline in reading for pleasure over 20 years of the American time use survey. Iscience, 28(9).
Castles, A., Rastle, K., & Nation, K. (2018). Ending the reading wars: Reading acquisition from novice to expert. Psychological Science in the Public Interest, 19(1), 5–51.
Duff, D., Tomblin, J. B., & Catts, H. (2015). The influence of reading on vocabulary growth: A case for a matthew effect. Journal of Speech, Language, and Hearing Research, 58(3), 853–864.
Lesnick, J., Goerge, R., Smithgall, C., & Gwynne, J. (2010). Reading on grade level in third grade: How is it related to high school performance and college enrollment. Chicago, IL: Chapin Hall at the University of Chicago, 1, 12.
Marjou, X. (2021). OTEANN: Estimating the transparency of orthographies with an artificial neural network. Proceedings of the Third Workshop on Computational Typology and Multilingual NLP, 1–9.
May, H., Blakeney, A., Shrestha, P., Mazal, M., & Kennedy, N. (2024). Long-term impacts of reading recovery through 3rd and 4th grade: A regression discontinuity study. Journal of Research on Educational Effectiveness, 17(3), 433–458.
Minus, M. A. E. (1993). The relationship of phonemic awareness to reading level and the effects of phonemic awareness instruction on the decoding skills of adult disabled readers. The University of Texas at Austin.
Moats, L. C. (2000). Whole language lives on: The illusion of “balanced” reading instruction. Diane Publishing.
Ryan, H., & Goodman, D. (2016). Whole language and the fight for public education in the US. English in Education, 50(1), 60–71.
Shaywitz, S. (2003). Overcoming dyslexia. New York.
The post Why Kids Are Getting Worse at Reading: The Case Against Whole-Language Teaching appeared first on Economics from the Top Down.
Russell Coker: Communication and Hostile AIs [Planet Debian]
We seem to be entering an “AI” apocalypse of sorts, they aren’t going to kill us or even take our jobs. What they are doing is destroying the Internet commons by filling it with rubbish. This isn’t even real AI, just pattern matching and prediction systems, mostly LLMs.
Scott Shambaugh’s saga of being attacked and defamed by an OpenClaw AI bot is interesting and raises some disturbing possibilities for future online discussion [1]. Imagine what it would be like if everyone who was in any way notable for free software work had 100 such bots going after them.
Bruce Schneier and Nathan E. Sanders wrote an insightful article about the AI generated text arms race [3] primarily concentrating on situations in which text that was assumed to be written by humans but was actually written in bulk by bots was performing a DOS attack on people who were reviewing it. There are many situations such as book publishing and publishing letters to the editor of newspapers where getting new material from unknown people is an important part of the job but where there are also people making low quality submissions that are almost a DOS attack at the best of times.
Currently the email spam problem continues to get worse and when LLM use increases it will get significantly worse. Email encryption isn’t viable [4]. The PGP web of trust never really worked well as it’s too difficult for most users.
The amount of “AI” generated content that’s being recommended to users on platforms like YouTube and Facebook is steadily increasing and the amount of LLM generated commentary that purports to be from real people on Twitter and Facebook is also increasing. Here’s an informative blog post by Erich Schubert about this [5].
One option and possibly the default option is to surrender to this and just let everything we built on the Internet over decades get destroyed. Whether to surrender is a decision that can be made on a per-service basis.
Twitter is pretty much useless anyway, I quit Twitter because Elon deliberately made it suck [6]. In my opinion this is not surrendering to what’s being done there, I’m just stopping wasting time on it and using better options. I used to have about 300 followers on Twitter and I don’t think that many of them would ever choose to stop following me, so I presume that about 1/3 of the people following me have decided to totally quit Twitter and delete their accounts. I also presume that some of the remainder have done the same as me and just kept a mostly inactive account. If Elon suddenly stopped being a stupid asshole it probably wouldn’t change anything as the value of the system was connections to others. Some people will consider my abandonment of Twitter as surrender and I accept that it’s not an unreasonable opinion. I think that the possibly 100 Twitter followers of mine who deleted their accounts surrendered.
Facebook has been becoming a worse service, it’s business model is becoming increasingly exploitative and it’s interface is designed to be addictive. It’s probably best avoided unless you really need it. The only good thing about Facebook at the moment is that Facebook Marketplace doesn’t take a cut on sales and there are some really good deals on computers if you know what to look for. Unfortunately Facebook has a large number of users who are from marginalised communities and have no other alternatives for communication. It would be good to get them migrated to other platforms.
We could just give up on a lot of general communications services and have everyone accept that good content is drowned out by rubbish and have the Internet become divided between people who accept the rubbish and those who cease using large portions of the Internet environment to avoid it.
Lemmy is a good FOSS federated alternative to Reddit which also covers some of the uses of Facebook. It needs more users to get critical mass but is still quite usable. A post that might get a dozen comments on Reddit may get 1 comment on Lemmy but that one comment will be a good one. Reddit doesn’t appear to be attacked much by LLM generated content at least not yet. Even if the Reddit model proves to be resilient to LLM attack the Lemmy software can be used to replace some things that are done on Facebook,
Mastodon is a good FOSS federated replacement for Twitter, it has a decent user-base including some VIPs. While it is aimed at the Twitter use case it can also cover a significant part of the Facebook use case.
There are some other FOSS social media programs which could take over other parts of the commercial social media environment.
Generally commercially run Internet services will have a financial incentive to allow the problems to get worse so we need to rely on FOSS software, non-commercial implementations, and government services.
For a long time Google has had a monopoly on web search, but now they default to including an “AI Overview” at the start of the results which is sometimes useful but also sometimes very wrong. You can use the search URL “https://www.google.com/search?q=%s&udm=web” to get google results without rubbish. But I presume that they will break that if it gets too popular.
Searxng is a AGPL licensed metasearch engine that aggregates results from other engines, here’s the Searxng source [7] and here’s a list of Searxng instances if you want to try one [8].
Even using meta search engines like Searxng won’t help if the original data is overloaded with spam, but alleviating the problem is a good temporary measure.
I’ve idly considered the possibility of having some sort of rating system for web pages that uses a web of trust so that you can securely use trust ratings of friends of friends etc. But given all the difficulties in using a web of trust for signing GPG key for software developers (the demographic that is most skilled at doing such things) it doesn’t seem viable.
Should we surrender the idea of having a usable public web?
In the early days of the web (before Google) it was standard practice to rely on recommendations from other people or from trusted sites to find other sites, that could be considered to be an informal web of trust. We could go back to that sort of usage pattern if Google and many of the big sites get overwhelmed by LLM generated spam.
I believe that Wikipedia will be at the front lines of this battle. It’s model has always included anonymous contributions. Benjamin Mako Hill wrote an interesting blog post about research he did with Kaylea Champion into Wikipedia pages on taboo topics which have a larger portion of contributors choosing to be anonymous than non-taboo pages [9]. Wikipedia also has a long history of being abused for various reasons, one that I witnessed was someone putting false content into Wikipedia pages to immediately cite them in support of their facebook arguments. That sort of thing can be dealt with at human scale but a large scale attack by bots is a different problem to solve. Also with the recent developments in AI developing multiple web sites entirely populated for the purpose of supporting one fake entry in Wikipedia is plausible.
The upside of these attacks that I predict is that they will attract the attention of all the people who have skills related to developing counter-measures. While LLM bots are filling the inboxes of publishers with rubbish and messing up the stackoverflow comments section not a lot of people are bothered, but once the attacks on Wikipedia get serious everyone will take notice.
Bruce Schneier and Nathan E. Sanders wrote an interesting blog post about nationalised public AI [10]. While that won’t directly address this issue it will get the right technology in the hands of people who can use it in the right way.
This is going to be a difficult problem to solve, more difficult than the email spam problem we have been unable to solve after 30 years of working on it.
This is also a very important problem, we are currently in an age where we have access to information that most people couldn’t even dream of 30 years ago. We also have disinformation that combines some of the worst aspects of authoritarian regimes throughout history combined with the worst aspects of cult brainwashing. If we lose access to the information but the disinformation remains (or get worse) then the result will be terrible.
I don’t have great ideas for solving this. I have outlined some small ideas to mitigate things and I hope that others can expand on them.
Please write comments with any good ideas you have, or even ideas that don’t totally suck. A problem this difficult is not going to be solved in a blog comment, but a blog comment might point in the right direction.
I'd like an AI bot that could do this. I open my browser to
a page on netflix.com. It scans the page, figures out what movies
are there, then it searches metacritic for each and presents me a
list of all shows with a rating above a certain score. I know the
streamers don't want us to have this info (I don't really
understand why) but I really want it. BTW, they say the Green
Knight is fantastic. Got the tip from a NYT email, but even
they didn't say what the rating was, or even what their own
reviewer said. Had to do this thing manually. Do they have any
user-oriented creative people in the mix anywhere in this
system??
Valhalla's Things: Ink Lightfastness Tests 2026 [Planet Debian]
Posted on March 28, 2026
Tags: madeof:atoms, topic:inks

Note
This post will be updated in the next weeks with the test results as they become available.
Note
Most of the images in this post have no real alt-text: they are all scans of the test sheet at various stages through the test, and the results visible on them are described in detail at the end of the post.
Most of the time, what people write by hand will either end up inside a notebook in a drawer or cupboard where it’s well protected, or thrown in the recycling where it doesn’t matter. There are times, however, when things will be exposed to light: it doesn’t matter whether it’s a work of artistic calligraphy that you want to frame or a passive-aggressive notice left in the atrium of a building; it is useful to know whether the work will remain legible or it will fade into nothing in a short time.
A few inks are tested by the producers for lightfastness according to some established standard, a few others are declared lightfast in a generic way, but a lot come with no indication at all. Proper testing according to the standard scales requires significant equipment to precisely control the exposure, but it’s significantly easier — and fun — to do a simple test to divide the inks into three categories:
In the past I’ve done some such tests by taping some sheets to a south-east facing window, and I’ve noticed that most of the results were already apparent after a month, and there was basically no difference between two and three months of exposure, but spring equinox to summer solstice is a nice timeframe to use for such a test (and it leaves time for a second test of different materials from summer solstice to autumn equinox), so this is what I’ve chosen to do this year.
Rather than a window, now I have access to a south-facing covered balcony that is protected from rain but receives quite a bit of direct sun, so instead of taping sheets to the windows1 I’ve prepared a sturdy cardboard panel that I can leave on a table on the balcony, hopefully safe from the rain, but well exposed to the sun.
And then made a quick test, and realized that without the window glass in front, the black strip used to cover the unexposed half of the sample doesn’t lay flat and lets some sun in, so I used an old cheap2 glass frame instead of the panel.

The next step, already in January, was mentioning in a fountain-pen enthusiasts forum that I planned such a test, and asking if people were interested in having me buy a few samples of more inks when I was buying my next pen. The word “enthusiasts” is probably a hint of the reason why soon afterwards I received a package with the pen I had planned to buy, its converter, and a couple dozens ink samples. And then a couple envelopes with additional samples of inks that weren’t available on the shops, from said enthusiasts.
Added to the inks I already had acquired since the last lightfastness test, it meant that they couldn’t all fit in one single page, and thus I had some room to add some inks I had already tested: some were requests, and for others I tried to select ones that felt relevant. Since I’m changing the test setup, I’ve decided I should probably keep doing this until I’ve tested again all of the inks I still have available.


For the paper, I’ve used A4 sheets of Clairefontaine Dessin Croquis 160 g/m², one of my staples that I’m sure I will have available in the next years, printed with a dot pattern with a laser printer, using this pdf. And as for the pen I’ve used a fresh Brause n°361 nib: loading a fountain pen with all of these inks wouldn’t be a reasonable effort, and the 361 is one of the writing implements I use most anyway. I also used a glass pen to fill a couple of squares on the paper with more ink. One side of each sheet was then covered with a strip of 300 g/m² black paper (also from Clairefontaine), kept in place with three dots of non-permanent two sided tape, put in the frame and set out in the sun on the morning of 2026-03-20, the day of the spring equinox.

While I was filling the sheet for the lightfastness tests, I decided to also prepare a second set of sheet, for a liquid resistance drop test.
On each line, beside the name of the ink, I added five sets of crossing parallel lines, and let everything dry for a few days.
Then I used a syringe to put a drop of a liquid on each set of lines, waited for it to be absorbed into the paper and to dry, at least overnight, but sometimes also for a day or two (life happened), and then looked at the results and did the next test.
The first liquid was water, with the usual wild difference between washable and permanent inks, and all of the intermediate possibilities.
The second liquid was isopropyl alcohol, and I was surprised to see that, with very few exceptions, most inks didn’t change at all. I wonder whether that’s related to the fact that instead of forming a drop it was absorbed almost immediately into the paper, and dried in a very short time.
The third liquid was hydrogen peroxide: beside the individual results I noticed that its column yellowed visibly; I wonder whether that means that the paper I used has optical brighteners, and it will also yellow under the sun: that wouldn’t be ideal, but it would also be a surprise, for paper that is acid free and sold for arts.
The fourth liquid was citric acid, by mixing a bit less than a teaspoon of citric acid granules in just enough very warm water (heated to 70°C, i.e. the lowest temperature available on my kettle) to dissolve most of the acid. I forgot that I had some old PH strips until one hour after I’ve put the drop on the paper, and I don’t know whether something had changed, but when I did remember about them it showed a deep red between 1 and 2. I don’t think I can trust those strips too much, however.
This backfired badly: the drop of citric acid never dried out, but formed a sticky paste that prevented me from scanning the results, and I’m not sure whether I’ll do the last test, which was supposed to be household bleach.


Luckily I had scanned the partial results, and they are shown here.


After one full day with plenty of sun, nothing really had changed, except possibly for a vague hint that the Herbin Bleu Myosotis may have have been a bit lighter than it started, but it may also have been a suggestion.


After three days, however, some results started to show, with the most fugitive inks starting to be visibly changed, becoming either paler or in some case duller.


And the full week showed more of that, with a few more inks starting to show visible change.
These are the inks I’ve tested, and here I’ll add notes on the results, as soon as they will be available, keeping this section updated.
When nothing is mentioned, it means that there were no changes, either under the light or under the various liquids.
Not resistant to water, the drop becomes an uniform colour spot.
After one week it started to be just slightly paler.
Not resistant to water, the drop becomes an uniform colour spot.
After one week it started to be just slightly paler.
Not resistant to water, the drop becomes an uniform colour spot.
After three days it started to be just slightly paler, after a week visibly so.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop looks a bit lighter than the one with just water.
After one week it started to be just slightly paler..
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop is significantly lighter and tends towards green.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop is almost completely bleached to a light yellow.
After one week it started to be a bit duller.
Not resistant to water, the drop becomes an uniform colour spot.
After one week it was visibly duller, looking darker than the original.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop is almost completely bleached to a light yellow.
After one week it started to be just slightly duller..
Not resistant to water, the drop becomes an uniform colour spot.
Not resistant to water, the drop becomes an uniform colour spot.
Not resistant to water, the drop looks very washed out, although a hint of the original shape can be guessed; the hydrogen peroxide drop is almost completely bleached to a light yellow.
After one week it was visibly paler and duller.
.
.
.
.
Not resistant to water, the drop becomes an uniform colour spot.
Not resistant to water, the drop becomes an uniform colour spot.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop is almost completely bleached to a light yellow.
Not resistant to water, there is a drop of uniform colour, but it maintains a somewhat recognisable shade of the original shape.
Not resistant to water, there is a drop of uniform colour, but it maintains a somewhat recognisable shade of the original shape.
Not resistant to water, there is a drop of uniform colour, but it maintains a somewhat recognisable shade of the original shape.
Not resistant to water, there is a drop of uniform colour, but it maintains a somewhat recognisable shade of the original shape.
Not resistant to water, there is a drop of uniform colour, but it maintains a recognisable shade of the original shape; under hydrogen peroxide the shade is significantly lighter.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide drop is significantly bleached to a light orange.
Water stains the paper, leaving however the original shape quite visible; is it almost completely bleached by hydrogen peroxide.
Water stains the paper, leaving however the original shape quite visible; is it almost completely bleached by hydrogen peroxide.
Water stains the paper, leaving however the original shape quite visible; is it almost completely bleached by hydrogen peroxide.
Water stains the paper with a significant purple spot, leaving however the original shape quite visible; is is a bit bleached by hydrogen peroxide, but still quite readable.
Not resistant to water, the drop becomes an uniform colour spot, but there is a visible trace of the original shape.
Not resistant to water, the drop becomes an uniform colour spot, with just a hint of the original shape; slightly bleached by hydrogen peroxide.
Not resistant to water, the drop becomes an uniform colour spot; quite bleached to a light yellowish green by hydrogen peroxide.
After one week it was visibly paler.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Not resistant to water, the drop becomes an uniform colour spot; the hydrogen peroxide bleached away the red sheen. This was one of the only two inks to react to isopropyl alcohol, which caused a pale cyan halo around the lines.
After three days it was still perfectly readable, but had visibly lost some red sheen, after one week the red had completely gone and it looked very dark blue (but still shiny)
Not resistant to water, the drop becomes an uniform colour spot.
Not resistant to water, the drop becomes an uniform colour spot.
Water very lightly stains the paper, leaving however the original shape quite visible. The other ink that reacted to isopropyl alcohol, with a pale purple halo around the lines.
.
Water stains the paper, leaving however the original shape quite visible; it is significantly bleached by hydrogen peroxide.
Not resistant to water, the drop becomes an uniform colour spot.
Water stains the paper, leaving however the original shape quite visible; it is significantly bleached by hydrogen peroxide.
Not resistant to water, the drop becomes an uniform colour spot, with just a hint of the original shape; significantly bleached by hydrogen peroxide.
After three days it had started to be slightly paler.
Not resistant to water, the drop becomes an uniform pink spot, significantly bleached by hydrogen peroxide.
After three days it was already visibly paler, after one week it was a pale grey.
Not resistant to water, the drop becomes an uniform colour spot, with just a hint of the original shape; significantly bleached by hydrogen peroxide.
After three days it was slightly duller.
Not resistant to water, the drop becomes an uniform colour spot, with just a hint of the original shape; significantly bleached by hydrogen peroxide.
After three days it had started to be slightly paler, more so after one week when it had also turned grey.
.
Water leaves a very light stain, but the original shape doesn’t look changed.
.
Not resistant to water, the drop becomes an uniform colour spot, with a trace of the original shape still visible; very lightly bleached by hydrogen peroxide.
Not resistant to water, the drop becomes an uniform colour spot, with a trace of the original shape still visible.
Not resistant to water, the drop becomes an uniform colour spot.
.
.
.
Not resistant to water, the drop becomes an uniform colour spot; very lightly bleached by hydrogen peroxide.
.
Perfectly normal hobby (#Stargate) [RevK®'s ramblings]
I'll keep saying it - perfectly normal hobby...
The [legitimate] excuse was testing LED placement and reliability - how close we can place them, can we put vias under them reliably, what size vias, how much power do a lot of LEDs really use. Also testing the code to place LEDs in rings and other formats automatically. These are all sensible questions, and answered best by getting a few test boards made - ones with lots of tightly packed LEDs. Another test is using PCB files to automatically make OpenSCAD data to allow designs to work directly from PCB to make 3D models. A complicated little project, and once again, best tested by actually having resin cases made and confirming how well they fit - so you need a few resin cases.
So it is legit R&D, honest - trial and error, pushing boundaries, etc. The fact I have a couple of design tweaks in both the LED PCB and the 3D model design is why I have a few now. I mean everyone should own at least five Stargate models, right?Now, I do have some of the LED panels for sale on Tindie. But I can't really sell these R&D prototypes. The base 3D design is also non-commercial licence, so I can't really sell that (well, maybe at cost). So now trying to work out a good home for a handful of gates. I don't seem to know quite enough geeks... Toot for more info.
I have made a video on how it all goes together... No toaster required. Enjoy...
Bluesky's future for devs [Scripting News]
There's a conference in Vancouver this weekend for people who are developing apps for Bluesky. They have a protocol they are proud of called AT Proto. A sexy name, but imho it doesn't do anything that Twitter's API did 20 years ago. So why do people hope it'll make a difference for independent developers? I think they're believing because they want to believe in something, a magic potion that will make it easy for the web to overcome the power of the silos like Twitter, Facebook, Threads and Bluesky too.
I feel most sympathy for the developers who are using AT Proto to make writing tools that use the web as their prototype for what a good text editor would do. But they overlook the problem that Bluesky itself has most of the limits on writing that Twitter has, although Twitter is working slowly to get rid of the limits, presumably because when Elon Musk saw them he thought the limits were bullshit, as I do too and always have. It was a tragedy for the web, the day Twitter decided the web wasn't a good model for writers of "tweets" -- they had to get rid of style, links, editing, enclosures and add a character limit so people couldn't use it for a longform writing platform.
The division created a problem that users have always wanted someone to solve -- they don't want to have to copy/paste everything they write into five different editors because none of the silos can connect, much like the Apple TV series of the same name. Each silo is a world unto itself. And somehow, Bluesky which preserves the silo tradition, also claims to be a lover and supporter of the open web, truly outstanding VC hype.
Here's what Bluesky could do to turn me into a fan. Get rid of the limits. Then the people who have created writing tools for AT Proto will have a market to serve. We will of course convert WordLand to serve that newly enabled user base. Maybe that's what the writing tools devs are anticipating -- the day when Bluesky decides that character limits have outlived their usefulness. And that links, the core innovation of the web, deserves to be loved, not hidden as if it's too much power for their users. When we can add an enclosure to help be sure that podcasting survives the latest BigSilo onslaught (it has survived all that came before, I have no reason to believe this time will be any different). They do also need to support inbound and outbound RSS so we can easily hook everything together. I will praise them individually and collectively. I would love to be wrong! I will sing a song in their name.
Rule #4 of Rules for Standards-Makers: "People choose to interop because it helps them find new users. If you have no users to offer, there won't be much interest in interop."
That's where Bluesky is stuck. If they want to keep their devs and to attract new ones, they have to give them access to all their users. All of them. And the only way to do that is to get rid of the limits, to make it the one twitter-like platform that can handle everyone else's tweets, and every writing tool ever written for the web before Twitter came along -- ie Tumblr and WordPress, and everything anyone can think of that conforms to the standards that power the web -- HTTP and HTML. I've suggested we settle on Markdown as the core writing functionality of these platforms.
The problem is that Bluesky doesn't have much of a business model if all their users can walk out the door every night. Not much monetizable value in that, but it would be good for the web, and for civilization.
James Valleroy: Stagger v0.1.0 [Planet Debian]
I’ve decided it’s time to tag a v0.1.0 release on my roguelike game project, Stagger. It’s more of a small demo than a full game at this point. It is turn-based, and has purely text-based “graphics”, like the original Rogue.
Here’s a “screenshot”:
####################
#..................#
#.@................#
#....|.............#
#..................#
#.........>........#
#..................#
#..................#
#..................#
####################
HP: 10/10
You can find the repository at either of these locations:
https://git.sr.ht/~jvalleroy/stagger
https://codeberg.org/jvalleroy/stagger
The game is developed in Python, using ncurses. It is dual-licensed under AGPL and MPL.
Systems and the default to yes [Seth's Blog]
Joseph Brandlin is a scofflaw.
After months of fighting to get the city council to put a stop sign on the corner of the dangerous intersection near his home, he simply did it himself. A first-rate, professional job that cost more than $1,000. As he was finishing the job at 1:30 am, he was arrested and charged with a felony.
A hundred years ago, the default was that pedestrians were in charge. Cars were guests, only going where they were invited. But the persistent productivity and cultural force of the automobile carried the day, and the default flipped. The roads must roll.
If it can be paved or straightened or sped up, it is. If the car wants it, the answer is “yes.”
80,000,000 people have died as a result of automobiles over time. (It’s harder to estimate how many lives were saved or enriched by this massive shift in the transport of food, people and resources.) A successful system can redraw our maps and our expectations.
When systems gain momentum like this, it’s because they create urgent and immediate value, enough to disrupt the status quo. And once the status quo has changed, the momentum becomes normal, the way things are, until persistent community action (or another, even more relentless system) changes the defaults.
The system doesn’t care about Joseph Brandlin’s kid. It cares about the flow and the status of those that maintain that flow.
Ironically, his arrest is almost certainly going to result in a stop sign being installed. Using one system (the media) to change another.
We’re all living through the biggest and fastest systemic shifts in a century, whether we want to or not. The internet, healthcare, the aging of populations and now, particularly, AI–they’re changing defaults. It’s possible (even likely) that individuals will go out in the middle of the night and seek to change something in their neck of the woods, but as we’ve seen with system change before, that’s not usually the reliable path to make a lasting impact.
Every system eventually acts as if it’s more important than the people it was built to serve. HAL isn’t going to open the pod bay door merely because you insist. But persistent systemic action often bends the system toward better. And better is up to us.
What if a dialog wants to intercept its own message loop? [The Old New Thing]
So far, we’ve been looking at how a dialog box owner can customize the dialog message loop. But what about the dialog itself? Can the dialog customize its own dialog message loop?
Sure. It just has to steal the messages from its owner.
The dialog box can subclass its owner and grab the
WM_ENTERIDLE message. Now, maybe it should be
careful only to grab WM_ENTERIDLE messages that
were triggered by that dialog and not accidentally grab messages
that were triggered by other dialogs.
HANDLE hTimer;
LRESULT CALLBACK EnterIdleSubclassProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam, UINT_PTR id,
[[maybe_unused]] DWORD_PTR data)
{
if (message == WM_ENTERIDLE &:&
wParam == MSGF_DIALOGBOX &&
(HWND)lParam == (HWND)id) {
return SendMessage(hdlg, message, wParam, lParam);
} else {
return DefSubclassProc(hwnd, message, wParam, lParam);
}
}
INT_PTR CALLBACK DialogProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
{
LARGE_INTEGER twoSeconds;
switch (message) {
⟦ ... ⟧
case WM_INITDIALOG:
hTimer = CreateWaitableTimerW(nullptr, FALSE, nullptr);
twoSeconds.QuadPart = -2 * wil::filetime_duration::one_second;
SetWaitableTimer(h, &twoSeconds, 2000, nullptr, nullptr, FALSE);
SetWindowSubclass(GetParent(hdlg), EnterIdleSubclassProc,
(UINT_PTR)hdlg, 0);
⟦ other dialog box setup ⟧
return TRUE;
case WM_ENTERIDLE:
OnEnterIdle(hdlg, (UINT)wParam, (HWND)lParam);
return 0;
⟦ ... ⟧
}
return FALSE;
}
When the dialog box initializes, we create the periodic waitable
timer (for demonstration purposes) and also subclass our owner
window with the
EnterIdleSubclassProc. We use the
dialog window handle as the ID for two reasons. First, it lets us
pass a parameter to the subclass procedure so it knows which dialog
box it is working on behalf of. (We could also have passed it as
the data parameter.) More importantly, it allows
multiple dialogs to use the
EnterIdleSubclassProc to subclass
their owner, and the multiple subclasses won’t conflict with
each other.
The subclass procedure checks whether it is a
WM_ENTERIDLE, marked as coming from a dialog box
message loop, and where the dialog box handle is the one we have.
If so, then we forward the WM_ENTERIDLE back
into the dialog for processing. That processing consists of using
the OnEnterIdle function we created at the
start of the series, which processes waitable timer events while
waiting for a message to arrive.
Okay, but should we be careful to grab
WM_ENTERIDLE messages only if they correspond to
our dialog box? Because if the owner displays some other modal
dialog box while our dialog is up (not really a great idea, but
hey, weirder things have happened), then we still want to process
our waitable timer events. But on the other hand, maybe that other
dialog wants to customize the message loop in a different way.
Probably best to steal messages only if they originated from our
dialog box.
The post What if a dialog wants to intercept its own message loop? appeared first on The Old New Thing.
How freshwater fish migrations are doing [Richard Stallman's Political Notes]
*Freshwater fish populations worldwide have crashed by about 81% since 1970.*
Just posted an advance look of the Book 13 cover on my Patreon!
I am planning to finally start the Book 13 Kickstarter very soon,
hopefully in April!
https://www.patreon.com/user?u=4949215
Bits from Debian: New Debian Developers and Maintainers (January and February 2026) [Planet Debian]

The following contributors got their Debian Developer accounts in the last two months:
The following contributors were added as Debian Maintainers in the last two months:
Congratulations!
US Tech Companies Must be Accountable in US Courts for Facilitating Persecution and Torture Abroad, EFF Urges US Supreme Court [Deeplinks]
SAN FRANCISCO – U.S. technology companies should be legally accountable in U.S. courts for building tools that purposefully and actively facilitate human rights abuses by foreign governments, the Electronic Frontier Foundation argued in a brief filed Friday to the U.S. Supreme Court.
The brief filed in the case of Cisco Systems, Inc., et al., v. Doe I, et al. urges the high court to uphold the U.S. Court of Appeals for the 9th Circuit’s 2023 ruling that U.S. corporations can be held liable under the Alien Tort Statute (ATS) – a law that lets noncitizens bring claims in U.S. federal court for international law violations – for taking actions in the U.S. that aided and abetted persecution and torture abroad.
“This is not a case about a company that merely provided routers or other general-purpose technologies to a foreign government. It is about a company that purposefully and actively assisted in the persecution of a religious group,” the brief says. “There is a growing set of companies—including American companies—that provide surveillance technologies that are vulnerable to, and indeed are being used to, support gross human rights abuses. Because of this, the outcome of this case will have profound implications for millions of people who rely on digital technologies in their everyday lives, including to practice their religion.”
The “Golden Shield” system that Cisco custom-built for the Chinese government was an essential component of persecution against the Falun Gong religious group—persecution that included online spying and tracking, detention, and torture. Victims reported that intercepted communications were used during torture sessions aimed at forcing them to renounce their religion. Falun Gong victims and their families sued Cisco in 2011 and a federal district judge dismissed the case in 2014. The case was delayed three times as the Supreme Court considered three prior ATS cases.
The 9th Circuit appeals court – after proceedings including an amicus brief from EFF – reversed that lower decision, holding that U.S. corporations can be held liable under the ATS for aiding and abetting human rights abuses abroad. It also held that a company does not need to have the “purpose” to facilitate human rights abuses in order to be held liable; it only needs to have “knowledge” that its assistance helped in such abuses. It then held that the plaintiffs’ allegations showed that Cisco’s actions met both standards. The court also held that the fact that a technology has legitimate uses does not shield a company from liability for other uses that led to human rights abuses when the standards of international law are met. Taken cumulatively, Cisco’s actions in the U.S. were sufficient to allow the case to proceed, the 9th Circuit ruled.
Cisco appealed to the Supreme Court, which granted review in January. The case, No. 24-856, is scheduled for argument on April 28.
Cisco Systems is just one of many U.S. companies that make surveillance systems, spyware, and other products used by governments to violate people’s human rights.
“This Court must not shut the courthouse door to victims of human rights abuses that are actively powered by American corporations,” the brief says. “In the digital age, repressive governments rarely act alone to violate human rights. They have accomplices—including technology companies that have the sophistication and technical know-how that those repressive governments lack.”
For EFF’s amicus brief to the U.S. Supreme Court: https://www.eff.org/document/2026-03-27-eff-amicus-brief-cisco-v-doe-scotus
For EFF’s Doe I v. Cisco case page: https://www.eff.org/cases/doe-i-v-cisco
For the U.S. Supreme Court docket: https://www.supremecourt.gov/docket/docketfiles/html/public/24-856.html
I Saw U: Singing on Top of Mt. Erie, Riding the 70 at Night, and Pulling Me out of Lake Washington in October [The Stranger]
Is it a match? Leave a comment here or on our Instagram post to connect! by Anonymous
Cool Boots, Mt Erie Summit
Your singing voice caught my eye (ear?) at the top of Mt Erie. You boiled water for lemon ginger peppermint tea. Maybe we can share a cup soon?
Angel of reassurance
Andie/Andy- you assured me when my date went to the bathroom at Gao Lhao Bangkok Noodle that she wasn't out of my league. Thx for calming me!
Bear Creek Village in Redmond
You: Hot, Handsome white guy in a black cap, hoodie, w beard in a black car with a woman. Me: Eating in green SUV. You had me looking back a few. Damn
I-5 N Green Utility Jacket Goddess with a Right-Hand Drive
While fixing my mascara in I-5 traffic, I had to do a double of your RHD Toyota Prado. I was caught off guard by how gorgeous you are. Dinner?
Cute Bait Shop Tomboy Tuesday 3/17
Saw you as I was leaving. You smiled at me w/ the loveliest smile. Time stopped. You: in a booth. White LA hat. Me: Black hair & puffy coat.
To the tall redheaded goddess who shops where I work:
You came in wearing a G2G hat and complimented my long hair. We’ve made a lot of eye contact and I’d like to make more. Come find me at checkstand two
70 mishap fairview at night
u got on the bus after the stop. i was in all black. kept making eye contact. again in a trench coat outside slu whole foods. ur cute i wanna know u
you pulled me out of the lake and called 911
Sunday Oct 5 circa 7:30PM I had fallen into lake Wash. was able to swim to shore but couldn't get out. I called for help you saved me -dinner/drink?
Is it a match? Leave a comment here or on our Instagram post to connect!
Did you see someone? Say something! Submit your own I Saw U message here and maybe we'll include it in the next roundup!
Min Lin Is an Undisputable Champion of Comedy [The Stranger]
An interview with Min Lin, one of our 2026 Undisputed Champions of Comedy. by Megan Seling
Our interview series with this year's Undisputable Champions of Comedy continues! Last week, you got to know Scott Losse (and his Taco Time order), and today I'm featuring Min Lin, who is sunshine in human form (and sometimes performs with her service dog companion Sunny).
Lin started performing stand-up, but admits she didn't love it at first. She didn't love people at all, actually. She credits Sunny for being a catalyst for changing her outlook. "Training Sunny as my service dog and having Sunny by my side helped me exist in the world differently," she says. Indeed, Sunny sometimes makes guest appearances onstage when Lin is performing her silly and optimistic sets around town at spots like Emerald City Comedy Club, Joketellers Union, and Laughs Comedy Club (where she recently opened for Irene Tu).
View this post on Instagram
Describe your comedy in five words.
Warm and
super silly human.
Now that you’ve been declared an Undisputed
Champion of Comedy, is there anyone in your life who said you
wouldn’t make it, and you would now like to take this
opportunity to rub it in their stupid face?
My older
brother has always been the doubter in my life. Hey Kurt! Watch me
roar!
I am in love with your dog, Sunny. She makes such good
faces! Will she be joining you onstage on April 4?
I
am also in love with my dog, Sunny. She is the undisputed champion
of silly goof. Is this an official invitation for her? If so,
yes!
You’ve mentioned that Sunny has helped
“rewire your brain,” and that has played a big role in
making your dreams of performing stand-up comedy come true. Can you
talk a little more about that?
I used to overanalyze
every interaction with people. I had a hoodie that said, "Ewwww
people," and it reflected accurately how I felt about people.
Training Sunny as my service dog and having Sunny by my side helped
me exist in the world differently. Sunny rewired my brain to be
grounded in newfound worthiness. Sunny was solely responsible for
pushing me over the threshold of finally pursuing comedy, my
lifelong dream since I was 13. And my kids are 13 now. So it all
feels magical. By the way, I love people now.
Do you remember your first time doing stand-up? Did you
love it from the start?
It was at Big Time Brewery in
the U-District. I brought Sunny. I sat in the corner behind the
support column so no one could see me throughout the night. While
on stage, I talked super fast the entire time. I had a joke about
Rhododendron. My materials didn't make any sense to anyone, not
even to myself. But my only goal was to get up on stage, so I felt
triumphant. My therapist was at that mic. It was a huge milestone
for our therapeutic relationship. I am goal-oriented; I didn't love
it from the start, I love it now.
Seattle has lost some great comedy spots
recently—Here-After closed, and Rendezvous, which had some
regular showcases and open mics, changed owners. With that, where
is your favorite place to see comedy in Seattle right
now?
The Seattle comedy scene has very creative
producers and a huge pool of talents with unique voices that are
always evolving. Live comedy is one of the best things you can
support to say "F you" to AI. There are so many comedy shows in and
around the city! Come check out a live comedy show this week! I
love performing at Laughs Comedy Club, Club Comedy of Seattle,
Emerald City Comedy Club, Old Stove Brewery Queen Anne and Ballard
locations! I did a secret sold-out Don't Tell Comedy show in a
stranger's house on Cap Hill recently. The guy was super nice, he
gave me a giant cat wheel for free. Our cat runs on the wheel for
treats, it's so cute! Shout out to Yashar!
For more funny business, watch Lin in conversation with the evening's host, Emmett Montgomery:
View this post on Instagram
See Min Lin perform at The Stranger's Undisputable Champions of Comedy at Washington Hall on April 4, 7:30 pm, 21+. Tickets available here.
Not the Next Williamsburg, the Next Bellevue [The Stranger]
Sound Transit's Crosslake connection is nearly 20 years in the making. And it's going to make us all think Bellevue is cool. Maybe. by Claudia Balducci
In 2018, The Stranger asked me point-blank: would light rail turn Bellevue into the next Williamsburg, a “bastion of weirdos and warehouse parties?” I said no. Eight years later, I was sort of right and sort of wrong.
I have spent my entire political career fighting to bring light rail to the Eastside. When I started that fight many years ago as a Bellevue City Councilmember, I took it up because I truly believed that it would improve the lives of my constituents. That means commuters, of course. But I also imagined nurses getting to rest their feet on a quick and easy train ride home after work, people with disabilities having a whole new way to get around, and tech workers opting to get out of their cars and onto the train.
Those dreams are about to be realized when the light rail across the I-90 bridge finally opens this Saturday, March 28. But dreams that I could not have imagined at the outset of my light rail crusade are also going to be realized.
Light rail enabled us to envision, plan, and build an entirely new neighborhood in Bellevue, the Spring District, which includes affordable housing and community spaces right next to a light rail station. Through partnerships with Amazon, King County, the City of Bellevue, and BRIDGE Housing, Sound Transit created 234 apartments for low-and-middle-income residents. Unfortunately for that hopeful Stranger journalist, we had to remove several warehouses to do that, and had fewer locations for those Williamsburg-style warehouse parties.
But culture is alive in Bellevue. Light rail now links the entire region to the BelRed Arts District, which has the highest concentration of arts and cultural businesses, organizations, and artists east of Lake Washington. It will bring people from across our county to enjoy and support our local art scene.
And it’s not just good for people. Light rail will allow dogs from all over the area to experience the joys of the Marymoor Dog Park, sometimes referred to as “Doggie Disneyland.” And don’t worry, I’m working with Sound Transit on a dogs-on-trains policy that will keep everyone involved safe and happy.
I still don’t think Bellevue is going to be the next Brooklyn. I think it’s going to be something new. It’s going to be the next Bellevue. Come and see for yourself—we’re just a train ride away!
Claudia Balducci is a King County Councilmember representing the Eastside and a Sound Transit Board member who has spent the last 20 years championing light rail on the Eastside.
Friday Squid Blogging: Bioluminescent Bacteria in Squid [Schneier on Security]
The Hawaiian bobtail squid has bioluminescent bacteria.
RSS 2.0 as a network [Scripting News]
Yesterday I hatched an idea of a demo program that turns RSS 2.0 feeds with rssCloud into a WhatsApp-type communicator. I called it rss.network, and asked ChatGPT to draw a prototype.
How I did it. I pasted a screen shot into ChatGPT, and wrote:
It did exactly what I asked. The result was this image.
I bought the domain and turned it into a website in a few minutes with my outliner.
One day later (today)..
I wrote a description of the app (below) and gave it to Claude.ai, including the image that ChatGPT produced.
It came back with a very usable design and implementation as a browser-based JavaScript app. I put it in the demo folder on my Digital Ocean server where you can run it by clicking on this link. It doesn't do anything, but it really would be easy to put it together with feeds, as we use them in FeedLand and WordPress. It's quite a team.
For now you'd use FeedLand to set it up for you and your friends, who would just use it. (I thought I needed an identity system, but what I really need to define a chat group is a subscription list, the standard stuff of RSS 2.0 systems.)
Should I finish this app tomorrow, or should I let someone else have the honor? :-)
It's time to adjust our thinking about where the value is in software. Getting a new design ready to use in order to experiment, to try out a new idea, was a big bottleneck, now you just have to ask for it.
I may have found my calling in all this. I know how to design network user interfaces. The important thing is now to use open formats and protocols so we don't go through the same nightmare of silos we've dealt with since Twitter 1.0 (over 20 years now).
Running a Plan 9 network on OpenBSD [OSnews]
This guide describes how you can install a Plan 9 network on an OpenBSD machine (it will probably work on any unix machine though). The authentication service (called “authsrv” on Plan 9) is provided by a unix version: authsrv9. The file service is provided by a program called “u9fs”. It comes with Plan 9. Both run from inetd. The (diskless) cpu server is provided by running qemu, booted from only a floppy (so without local storage). Finally, the terminal is provided by the program drawterm. The nice thing about this approach is that you can use all your familiar unix tools to get started with Plan 9 (e.g. you can edit the Plan 9 files with your favorite unix editor). I’m assuming you have read at least something about Plan 9, for example the introduction paper Plan 9 from Bell Labs.
↫ Mechiel Lukkien
If you’re running OpenBSD, you’re already doing something better than everyone else, and if you want to ascend to the next level, this is a great place to start. Of course, the final level, where you leave your earthly roots behind and become a being of pure enlightened energy, is running Plan 9 on real hardware as the universe intended, but let’s not put the cart before the horse.
One day, all of humanity will just be an endless collection of interconnected cosmic Plan 9 servers, more plentiful than the stars in the known universe.
Will “AI” chatbots be the tobacco of the future? [OSnews]
Towards the end of 2024, Dennis Biesma decided to check out ChatGPT. The Amsterdam-based IT consultant had just ended a contract early. “I had some time, so I thought: let’s have a look at this new technology everyone is talking about,” he says. “Very quickly, I became fascinated.”
Biesma has asked himself why he was vulnerable to what came next. He was nearing 50. His adult daughter had left home, his wife went out to work and, in his field, the shift since Covid to working from home had left him feeling “a little isolated”. He smoked a bit of cannabis some evenings to “chill”, but had done so for years with no ill effects. He had never experienced a mental illness. Yet within months of downloading ChatGPT, Biesma had sunk €100,000 (about £83,000) into a business startup based on a delusion, been hospitalised three times and tried to kill himself.
↫ Anna Moore at The Guardian
These stories are absolutely heart-wrenching, and it doesn’t just happen to people who have had a history of mental illness or other things you might associate with priming someone for “falling for” an “AI” chatbot. Just a few years in, and it’s already clear that these tools pose a real danger to a group of people of indeterminate size, and proper research into the causes is absolutely warranted and needed. On top of that, if there’s any evidence of wrongdoing from the companies behind these chatbots – intentionally making them more addictive, luring people in, ignoring established dangers, covering up addiction cases, etc. – lawsuits and regulation are definitely in order.
Only yesterday, Facebook and Google lost a landmark trial in the US, ruling the companies intentionally made social media as addictive as possible, thereby destroying a person’s life in the process. Countless similar lawsuits are underway all over the world, and I have a feeling that in a few years to decades, we’ll look at unregulated, rampant social media the same way we look at tobacco now.
Perhaps “AI” chatbots will join their ranks, too.
Microsoft removes trust for drivers signed with the cross-signed driver program [OSnews]
Today, we’re excited to announce a significant step forward in our ongoing commitment to Windows security and system reliability: the removal of trust for all kernel drivers signed by the deprecated cross-signed root program. This update will help protect our customers by ensuring that only kernel drivers that the Windows Hardware Compatibility Program (WHCP) have passed and been signed can be loaded by default. To raise the bar for platform security, Microsoft will maintain an explicit allow list of reputable drivers signed by the cross-signed program. The allow list ensures a secure and compatible experience for a limited number of widely used, and reputable cross-signed drivers. This new kernel trust policy applies to systems running Windows 11 24H2, Windows 11 25H2, Windows 11 26H1, and Windows Server 2025 in the April 2026 Windows update. All future versions of Windows 11 and Windows Server will enforce the new kernel trust policy.
↫ Peter Waxman at the Windows IT Pro Blog
The cross-signed root program was discontinued in 2021, and ran since the early 2000s, so I think it’s fair to no longer automatically assume such possibly old and outdated drivers are still to be trusted.
Folk Etymologies [Penny Arcade]
As something of a connected phenomenon - my instinct is to say "corollary," but I think that's not correct - as Penny Arcade was unearthed by the wily Zillenial, the many fruits of our enterprise became known. The true facts of the name PAX, for example - a name I came up with in five seconds at Costco because we got a call saying the show thing we were trying to do needed a name. I'm always delighted when someone finds the information I tucked in there. Never you mind that the next question is usually "what's a Penny Arcade" because that's not what this story is about!!!
Paul Tagliamonte: librtlsdr.so for fun and profit [Planet Debian]

hz.tools will be tagged #hztools.It’s well known and universally agreed that radios are
cool. Among the contested field of coolest radios, Software Defined
Radios (SDRs) are definitely the most interesting to me. Out of all
of my (entirely too many) SDRs I own, the rtlsdr is
still my #1. It’s just good. It’s a great
price, extremely capable, reliable, well-supported, and compact.
Why bother with anything else? Sure, it can’t transmit, uses
a (fairly weird) 8 bit unsigned
integer IQ representation, limited sampling rate, limited
frequency range – but even with all that, it’s still
the radio I will pack first. Don’t get me wrong, I love my
Ettus radios, PlutoSDRs, HackRFs, my AirspyHF+ - they’re
great! I just always find myself falling back to an
rtl-sdr, every time.
Perhaps the best reason to use an rtlsdr is the
absolutely mind-boggling amount of cool stuff people have written
for it. The rtlsdr API is super easy to use, widely
supported if you’re building on top of existing radio
processing frameworks – it’s still a shock to
me when something omits rtlsdr support.
Over the last 7 years, I’ve been learning about radios
– I got my ham radio license (de K3XEC),
hacked on some cool stuff where I’ve learned how
radios work by “doing”, and even was lucky enough to
give my first rf-centric talk at
districtcon. Embarrassingly, I still haven’t gotten
around to learning how the fancy stuff like GNU Radio works. I’m sure
I’m going to love it when I do.
As part of this, I’ve also cooked up some very
unprofessional formats and protocols I use for convenience.
Locally, all my on-disk captures are stored in rfcap or more recently
arf (post on this coming soon), while direct SDR
access at my house is almost entirely a mix of the widely used
rtl-tcp protocol, and my
“riq” protocol (post on this coming soon).
Both rtl-tcp and riq operate over the
network, so I don’t have to bother with plugging things into
USB ports, and I can share my radios with my friends.
All of that work sits in my current generation of radio
processing code, “sparky” (a reference to spark-gap
transmitters), which is a heap of Rust, supporting everything
from no_std for embedded experiments, conditional
support for interfacing with all the radios I own, and
tokio-based async support in addition to blocking i/o
for highly concurrent daemons. This quickly advanced beyond my old
Go-based code (hz.tools/go-sdr), which I
archived so I can focus on learning. I still think Go is a great
language to write RF code in – but I can’t focus on
that tech tree anymore.
Of course, this now poses a new problem – no one supports my format(s) or radio protocol(s), since, well, I’m the only one using them. I’ve committed a fair amount of my hardware to this setup, and yanking it from the rack to try something out does pose a bit of a pickle. This isn’t a huge deal for learning, but it does make it tedious to try out something from the internets.
Thankfully, Rust has robust support for wrap[ping itself]
in a grotesque simulacra of C’s skin and mak[ing its] flesh
undulate, which is an attractive nuisance if i’ve ever
seen one. Naturally, my ability to restrain myself from engaging in
ill-advised rf adventures is basically zero, so it’s time to
do the thing any similarly situated person would do –
reimplement the API and ABI of librtlsdr.so, backed
with sparky instead.
Since enumeration of devices is going to be annoying (specifically, they’re over the network), I decided early-on to rely on an explicit list of devices via a configuration file. I’d rather only load that once so programs don’t get confused, so I opted to use a CTOR to run a stub when the ELF is linked at runtime.
// lightly edited for clarity
#[used]
#[expect(unused)]
#[unsafe(link_section = ".init_array")]
pub static INITIALIZE: extern "C" fn() = sparky_rtlsdr_ctor;
#[unsafe(no_mangle)]
pub extern "C" fn sparky_rtlsdr_ctor() {
let config: Config = {
if let Ok(config_bytes) = std::fs::read("/etc/sparky-rtlsdr.toml") {
toml::from_slice(&config_bytes).unwrap()
} else {
Config { device: vec![] }
}
};
CONFIG.set(config);
}
Next, it’s time to start with the basics. Opening and
closing a handle using rtlsdr_open and
rtlsdr_close. Given we don’t control the
runtime, and the rtl-sdr device handle is opaque (for
good reason!), I opted to smuggle a rust
Box<Device> non-FFI safe heap-allocated struct
through the device handle pointer, and let C take ownership of the
Box. No one should be looking in there anyway.
// lightly edited for clarity
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rtlsdr_open(dev: *mut *mut Handle, index: u32) -> int {
let config = &CONFIG.device[index as usize];
let sdr = match config.load() {
Ok(v) => v,
Err(err) => {
return -1;
}
};
let handle = Box::new(Handle { config, sdr });
unsafe { *dev = Box::into_raw(handle) };
0
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rtlsdr_close(dev: *mut Handle) -> int {
let dev = unsafe { Box::from_raw(dev) };
drop(dev);
0
}
With that in place, we can chip away at the API surface,
translating calls as best as we can. I won’t bother listing
it all, since it’s not very interesting – but
here’s an example implementation of
rtlsdr_set_sample_rate and
rtlsdr_get_sample_rate. These calls are translating
from an rtl-sdr frequency (which is a u32 containing
the value as Hz) into a sparky Frequency type, and invoking
get_sample_rate or set_sample_rate on the
device’s rust handle. Since each device implements the sparky
Sdr trait, the actual underlying device doesn’t
matter much here.
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rtlsdr_set_sample_rate(dev: *mut Handle, rate: u32) -> int {
let dev = unsafe { &mut *dev };
let rate = Frequency::from_hz(rate as i64);
if let Err(err) = dev.sdr.set_sample_rate(dev.channel, rate) {
return -1;
}
0
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rtlsdr_get_sample_rate(dev: *mut Handle) -> u32 {
let dev = unsafe { &mut *dev };
let freq = match dev.sdr.get_sample_rate(dev.channel) {
Ok(freq) => freq,
Err(err) => {
return 0;
}
};
freq.as_hz() as u32
}
After repeating this process for the rest of the stubs I could
(and otherwise setting error conditions if the functionality is not
supported), I was ready to try it out. Within sparky, I patched my
“MockSDR” (basically a Sdr traited Mock
type) to implement the same testmode IQ protocol that the RTL-SDR
has, and decided to see if rtl_test from
apt without any changes could be fooled.
$ rtl_test
No supported devices found.
Great, cool. No devices plugged in. Looks great. Let’s try
it with my librtlsdr.so LD_PRELOAD-ed
into the binary first:
$ LD_PRELOAD=target/release/librtlsdr.so rtl_test
Found 1 device(s):
0: hz.tools, mock sdr, SN: totally legit no tricks
Using device 0: sparky mock sdr
Supported gain values (0):
Sampling at 2048000 S/s.
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
^CSignal caught, exiting!
User cancel, exiting...
Samples per million lost (minimum): 0
$
Outstanding. Even more outstandingly, if I change my testmode
implementation to skip samples, rtl_test correctly
reports the errors – I think it’s showing promise! On
to try the real endgame here – let’s have our new
librtlsdr.so connect to an rtl-tcp
endpoint and see if rtl_fm works:
LD_PRELOAD=target/release/librtlsdr.so \
rtl_fm -d 1 -s 120k -E deemp -M fm -f 90.9M | \
ffplay -f s16le -ar 120k -i -
Found 2 device(s):
0: hz.tools, mock sdr, SN: totally legit no tricks
1: hz.tools, rtl-tcp, SN: node2.rf.lan:1202
Using device 1: sparky rtltcp node2
Tuner gain set to automatic.
Tuned to 91170000 Hz.
Oversampling input by: 9x.
Oversampling output by: 1x.
Buffer size: 7.59ms
Sampling at 1080000 S/s.
Output at 120000 Hz.
And there it was! Not the best audio quality (mostly due to my
inability to correctly read the rtl_fm manpage to tune
the filter and downsample/oversampling rates to audio), but
it’s definitely passable. I figured I’d try
something that was a bit more interesting next –
gqrx, since it’s super handy, I use it a ton,
and will definitely amuse me to no end. To my surprise and delight,
LD_PRELOAD=target/release/librtlsdr.so gqrx wound up
running, and I saw my devices pop right up in the setting menu:
Huge. Huge. Amazing. It did crash as soon as I tried to actually
use the radio, but after fixing a few dangling bugs in the
API surface (and some assumptions I think some underlying gnuradio
driver may be making that I need to double check in the code), I
was able to get a super solid stream of broadcast fm radio, with
gqrx being none the wiser. It thought it was “just”
talking to the device it knows as rtl=1.
Nice. I can’t wait to try this with the rest of the
rtl-sdr based tools I like having around using my riq
protocol next. I don’t think that’ll be worth a post,
but hopefully I’ll get around to publishing details on that
stack next.
Well. That’s it. End of story. A bit anti-climatic, sure.
While this new shim will provide me endless minutes of mild
amusement, I could see using this to expose my sparky testing
utilities via librtlsdr.so – my “mock
sdr” driver allows for replaying captures off disk, which
could be interesting to make sure that signals are still properly
decoded after changes, or instrument performance changes (via SNR,
BER, packets observed, etc) on reference samples I have on my NAS.
Maybe that’ll come in handy one day!
Truth be told, I’m not sure I actually want to encourage
anyone to do this for real (although I think I’ll definitely
be using it on my LAN to see what happens). I also don’t have
a repo to share – I don’t particularly feel with
dealing with the secondary effects of publishing
sparky (and sparky-rtlsdr) yet, since
i’m still getting my feet under me on the radio aspect of all
this.
I’ll be sure to post updates if anything changes with this here (tagged sparky) and at @paul@soylent.green. I can’t wait to post more about some of the odd sidequests (like this one!) i’ve completed over the last few years – I’ve been waiting to feel confident that my work has matured and was withstood the new problems i’ve thrown at it, and it largely has.
It’s my hope that these projects (and this project in particular) has provided a glimpse into the world of software defined radio for my systems friends, and a bit about systems for my radio friends. It’s not all magic, and I hope someone out there feels inclined to have some fun with radios themselves!
Humble Bundle + CARE: Fueling women’s economic power [Humble Bundle Blog]
Last March, in celebration of International Women’s Day and Women’s History Month, thousands of everyday gamers, readers and creators came together to do something extraordinary. Through a partnership with CARE, more than $340,000 was raised to support women around the world. Funds raised contributed to CARE’s Women’s Economic Growth Fund, helping CARE expand access to economic opportunity for at least 8,500 women; women who are starting …
The post Humble Bundle + CARE: Fueling women’s economic power appeared first on Humble Bundle Blog.
The Best Bang for Your Buck Events in Seattle This Weekend: Mar 27–29, 2026 [The Stranger]
Whatcha up to this weekend? We've got some ideas for ya, from the No Kings Protest threepeat to A Town Hall on Security and Surveillance and from Sound Transit's Crosslake Connection Opening Day to the final weekend of the U District Cherry Blossom Festival. Looking for more options? Check out our top picks of the week.
FRIDAY PARTIES & NIGHTLIFETouching
Grass
Are you chronically online? Or maybe fluent in cringe and
constantly reciting deep cut vocal stims? Then Touching Grass might
be exactly what you need. This club night is all about
transmuting brainrot into full-body catharsis, soundtracked by a
chaotic blend of happy hardcore, hyperflip, breakcore, trap, and
other genres so niche it’ll feel like your algorithm gained
sentience. Whether you show up nonverbal or only ready to
communicate in half-remembered memes and lyrics, take this as your
chance to shamelessly bring your weird, silly, digital self IRL.
LANGSTON THOMAS
(Kremwerk, Downtown, $15-$25)
Slog AM: Central District Loses its Only Walgreens, 2 Line’s Crosslake Connection Opens Tomorrow, TSA Workers Might Finally Get Paid [The Stranger]
The Stranger's morning news roundup. by Charles Mudede
What is this? It’s a key element of a development initiated in 2015 by Vancouver BC’s Westbank: the installation of a 747 jet once operated by United Airlines and sent to a California graveyard in 2017. The whole project, however, was delayed due to financial woes attributed to the COVID-19 pandemic and rising construction costs resulting from supply chain disruptions. In September, 2025, Westbank lost control of the project to OPTrust, a developer based in Toronto. The reconstruction of a Boeing 747 between the ground floors of two 47-story towers on 1200 Stewart Street began earlier this year. It is now close to completion. But it arrives as a relic twice over. For one, it’s a relic of the major role Seattle played in the history of aerospace; and, two, it’s a relic of the economic and construction boom Seattle experienced, thanks to Amazon, during the previous decade. Amazon is no longer the hiring powerhouse it once was (it recently lost its top spot as Seattle’s biggest employer to the University of Washington) and continues to bleed jobs. So, this installation has, at this point, no future in it. And as the present recession worsens, it will look more and more absurd.
Just when you thought Seattle’s pharmageddon might be abating, it strikes again. Its latest victim is on 23rd and Jackson. This part of town, which used to be the Central District’s commercial hub, lost a Starbucks in 2022—the building remains empty to this day, despite years-long unrealized rumors of Black Coffee Northwest’s plan to occupy the space. In January, the only grocery store in the neighborhood, Amazon Fresh, abruptly closed and immediately transformed an area that once had an excellent supermarket, Promenade Red Apple Market, into a food desert. Now the Seattle Times reports that Walgreens, the Central District’s only pharmacy, plans to close its doors on May 19. A reason for the closure was not provided by the company, which was bought by a private equity firm (Sycamore Partners) in 2025. But a year before this acquisition, Walgreens announced that it would begin closing 1,200 (roughly 14 percent) of its stores because they were “underperforming.” The Seattle area has already lost all of its Bartell Drugs stores because its parent company, Rite Aid, which acquired the family-owned chain in 2020, was bankrupt and closing its stores. When it rains it pours.
One hopes that April will not be a cruel month, that it will repeat the mood of much of March, which has enjoyed a bit of snow and kept things cool and wet. March, however, has been utterly mean to a huge part of the United States, which is still experiencing a record-breaking heat wave. The Pacific Northwest, and much of the East Coast, managed to remain in a mixture of winter and spring while several states entered a drought months before summer began to sizzle. Today, Seattle can expect a low of 37 and some clouds.
Remarkable Weather Channel article about the unprecedented heat wave and not a single word about #climatechange.
Embarrassing, and journalistic malpractice in this day and age.
weather.com/forecast/reg...
— Peter Gleick (@petergleick.bsky.social) March 25, 2026 at 3:07 PM
[image or embed]
The 2 Line, which connects Seattle and Bellevue, finally opens tomorrow after “years of construction setbacks.” Indeed, many of us came to the conclusion that it would never happen; that the Crosslake Connection, which involves two key stations (one at Judkins Park; the other on Mercer Island), was nothing more than a costly engineering dream. But Sound Transit proved us skeptics wrong. This part of the line will start singing “I am for real” tomorrow morning.
It seems the stock market has finally come to its senses and no longer believes a word exiting the president’s mouth. The war Trump started with Iran has no end in sight; there are no meaningful secret deals happening through back channels. Ain’t nothing going on but a bunch of social media posts that say one thing today and something else tomorrow. (These worthless announcements are accompanied by “suspicious trading.”) If you are not in the know—aka not in Trump’s inner circle of billionaires—then you’ll likely get burned in this corrupt market. The Dow is presently down 500 points after falling nearly 500 points yesterday.
The Senate unanimously passed a measure that would pay Transportation Security Administration workers but not ICE’s thugs, who, by the way, are still getting paid due to Trump’s One Big Beautiful Bill. And so their presence at a number of line- and employee-stressed airports (standing here, standing there; looking up, looking down) is seen as a slap in the face of those who haven’t received a paycheck in weeks. The Senate’s TSA measure has to go through the House before reaching the president’s desk.
TSA workers have been going a month with no paycheck and they’re pissed that ICE agents are getting paid to chill and play airport cop.
“TSA officers are sickened that we have unqualified DHS employees walking the airports, with pay, while we all suffer doing our qualified work unpaid.”
— Christopher Webb (@cwebbonline.com) March 25, 2026 at 7:59 PM
[image or embed]
Let’s end AM with Open Mic Eagle’s irony dripping track “woke up knowing everything (opening theme)”:
GNU Taler 1.5 released [Planet GNU]
We are happy to announce the release of GNU Taler v1.5.
GNU Taler 1.4 released [Planet GNU]
We are happy to announce the release of GNU Taler v1.4.
[$] The many failures leading to the LiteLLM compromise [LWN.net]
LiteLLM is a gateway library providing access to a number of large language models (LLMs); it is popular and widely used. On March 24, the word went out that the version of LiteLLM found in the Python Package Index (PyPI) repository had been compromised with information-stealing malware and downloaded thousands of times, sparking concern across the net. This may look like just another supply-chain attack — and it is — but the way it came about reveals just how many weak links there are in the software supply chains that we all depend on.
The telnyx packages on PyPI have been compromised [LWN.net]
The SafeDep blog reports that compromised versions of the telnyx package have been found in the PyPI repository:
Two versions of telnyx (4.87.1 and 4.87.2) published to PyPI on March 27, 2026 contain malicious code injected into telnyx/_client.py. The telnyx package averages over 1 million downloads per month (~30,000/day), making this a high-impact supply chain compromise. The payload downloads a second-stage binary hidden inside WAV audio files from a remote server, then either drops a persistent executable on Windows or harvests credentials on Linux/macOS.
New coal seam exploitation, AUS [Richard Stallman's Political Notes]
*Australia approves new coal seam gas expansion.* Is that really "Like lighting a cigarette while trying to quit"?
In my view, that comparison is not quite valid. Rather, extending the gas mines is like taping extender segments onto the mouth end of the cigarette, so that it never burns out.
Renaming AI to SALAMI [Richard Stallman's Political Notes]
*Let's forget the term AI. Let's call them Systematic Approaches to Learning Algorithms and Machine Inferences (SALAMI).*
Putinesque Iran to target water, elec. [Richard Stallman's Political Notes]
*Iran says it will "irreversibly destroy" Middle East infrastructure if US attacks energy sites.*
It is a war crime for either side to destroy civilian energy infrastructure, and this would be a disastrous one. But the bigger evil would be that of whichever country starts doing this. The wrecker says he plans to do so.
Israel still hitting West Bank territory [Richard Stallman's Political Notes]
*Israeli settlers have carried out a series of attacks across the occupied West Bank, setting homes and vehicles on fire and wounding several Palestinians in what witnesses described as coordinated raids on communities.*
The fanatical and violent "settlers" have been carrying out terrorist attacks on Palestinians for more than a decade, with police and border patrol watching passively, escalating step by step as they shift the government's stance.
Today's RSS cleanup [Scripting News]
Did some work on my RSS feed this morning.
Doing a little tuneup work on my blog's RSS feeds.
Security updates for Friday [LWN.net]
Security updates have been issued by AlmaLinux (389-ds:1.4, gnutls, mysql:8.0, mysql:8.4, nginx, nginx:1.24, opencryptoki, python3, vim, and virt:rhel and virt-devel:rhel), Debian (firefox-esr, ruby-rack, and thunderbird), Fedora (fontforge, headscale, kryoptic, libopenmpt, pyOpenSSL, python-cryptography, rubygem-json, rust-asn1, rust-asn1_derive, rust-cryptoki, rust-cryptoki-sys, rust-wycheproof, vim, and vtk), Oracle (freerdp, golang, mysql:8.0, and ncurses), Red Hat (osbuild-composer), Slackware (libpng and tigervnc), SUSE (chromium, frr, kea, kernel, nghttp2, pgvector, python-deepdiff, python-pyasn1, python-tornado6, python-urllib3, python3, python310, ruby2.5, salt, sqlite3, systemd, tomcat, vim, and xen), and Ubuntu (libcryptx-perl).
Error'd: Timely Reminder [The Daily WTF]
There is no particular theme this week, except that I have noticed many of these contributors are providing "customized" email addresses. This is a practice which I too have followed, to detect who is selling my email address to spammers. I would use a consistent login id for many web sites, and a decent password generated by a mental algorithm, with a unique email address for each site. It worked great until some website wanted to know specifically what "my" email address is, and I couldn't remotely remember which of 300 variant email addresses I had signed up for their services with.
First up, Martin is traveling by air. "I have heard it's so beautiful this time of year, so I look forward to visit @arrCity_SLPH." Martin helpfully explains "First sentence is in Danish: Your SAS-booking has been confirmed."
Dr. Bob Bobbers, PhD would rather drive. "Somehow I'm projected to arrive 20 minutes ago. I had started in one timezone and was finishing in the next timezone to the east, and when I had connectivity, the ETA was right, but somehow seems to have stopped computing correctly when I went offline."
Caleb B. thinks Amazon's AI-generated coding practices don't compute. "I've been working with my kid a lot with her math homework explaining that the alligator eats the bigger number. I think someone at Amazon needs to learn it too."
Andrew knows that there's a difference between > and ⋝. "Tried to upload my insurance card back and front. Apparently I cannot please the webserver."
And finally, Daniel D. has a timely reminder that we should all bear in mind so that nobody else has to: "Set your country, set your time zone and they should match. Google thinks otherwise, offering only one option (Czechia) for the selected country (Slovakia). The timezone is correct as the whole Central Europe uses the same time (CET). But the basic rule of usability is: Don't make me think!"
Arturo Borrero González: New job at Chainguard [Planet Debian]

A few months ago, in June 2025, I joined Chainguard, a company focused on software supply chain security. This post is a reflection on how I got here, what I’ve been doing, and why this role feels like a natural fit for my interests in Linux and open source technology.
Chainguard’s mission is to make the software supply chain secure by default. The company is built around the idea that the software we all depend on — from operating system packages to container base images — carries hidden risk in the form of vulnerabilities, unverified provenance, and untrusted build processes.
The company is perhaps best known for Chainguard Images: a catalog of minimal, hardened container base images that are continuously rebuilt and kept free of known CVEs. Each image is accompanied by a signed SBOM (Software Bill of Materials) and a verifiable provenance attestation, making it possible to cryptographically verify what went into a given image and how it was built.
Chainguard has an extensive catalog of software, and maintaining it up-to-date and CVE-free is a significant engineering challenge.
I joined the Chainguard Sustaining Engineering team as a Senior Software Engineer. We are responsible for maintaining packages and images in the software catalog up-to-date and CVE-free. The core of the business, basically.
We focus on the horizontal dimension of the catalog (pretty much all packages and images).
With +30,000 packages and +2,000 images, this is indeed an interesting task.
My role as Debian Developer, and my experiencie in the Debian LTS project was extremely valuable when joning this new team.
Software supply chain is truly a deep topic, gaining more and more relevance every day, especially as new technologies emerge and get adopted everywhere.
Since early in my career, I saw a recurrent problem of how companies, enterprises, or even governments, relate to and consume open source software, in a reliable, secure way. I believe Chainguard is doing the right things in the ecosystem, and I’m happy to be participating in the effort.
What’s in the status bottle? [Seth's Blog]
It’s often mislabeled. Sometimes the contents can make us ill, especially if we drink too much.
Status is easy to sell. But despite how often people buy the promise, it rarely delivers.
Samuel Henrique: I use curl with ECH btw (in Debian) [Planet Debian]

This is an experimental feature that, for the first time, brings full ECH support to curl on Debian using OpenSSL.
Starting with curl 8.19.0-3+exp2 (Debian Experimental), you can now use ECH, with HTTPS-RR and DoH for maximum privacy.
curl 8.19.0-3+exp2 is quite fresh at the time of writing, bear in mind that your repository might not have synced the package yet, all mirrors should have it by March 27th 14:00 UTC.
# defo.ie is a test server that confirms whether ECH was successfully used
curl -v --ech hard https://defo.ie/ech-check.php
# For Encrypted Client Hello (ECH) + DNS over HTTPS (DoH)
curl -v --ech hard --doh-url https://1.1.1.1/dns-query https://defo.ie/ech-check.php
"--ech hard" tells curl to refuse the connection entirely if ECH cannot be negotiated.
Or, if you would like to try it out in a container:
podman run debian:experimental /bin/bash -c 'apt install --update -t experimental -y curl && curl -v --ech hard --doh-url https://1.1.1.1/dns-query https://defo.ie/ech-check.php'
(in case you haven't noticed, apt now has the
--update option for the upgrade and
install commands)
CloudFlare calls it "the last puzzle piece to privacy" in their must-read announcement: https://blog.cloudflare.com/announcing-encrypted-client-hello/.
Encrypted Client Hello (rfc9849) encrypts the "which website are you connecting to?" part of the TLS handshake that was previously visible in plaintext.
HTTPS-RR (rfc9460) is a DNS record type that publishes connection parameters for a service, including the public key clients need to perform ECH.
DNS Over HTTPS (rfc8484) encrypts DNS queries by tunneling them over HTTPS, hiding what domains you're looking up from network observers.
When all three operate together over a CDN with shared IP space, the target domain name is hidden from passive observers; the HTTPS-RR record is queried over DoH in order to retrieve the ECH key (rfc9848) for the TLS handshake.
Seems like quite an important feature, and in fact the major browsers have it enabled for some time now, the trick is that they do not use OpenSSL (Chrome uses BoringSSL and Firefox uses NSS).
For everyone else, the only option is to patch OpenSSL or wait until 4.0.0 is released, and so part of the reason Debian is the first distro to enable it (curl + OpenSSL + ECH) is that the OpenSSL maintainer (Sebastian Andrzej Siewior) packaged the alpha release just 3 days after it was published.
Do not forget that ECH support is experimental and currently relies on the alpha release of OpenSSL.
Considering wcurl is just a wrapper on curl, it gets the feature for free:
wcurl --curl-options="--ech hard --doh-url https://1.1.1.1/dns-query" $URL
If you're using wcurl, you don't want to have to set parameters,
this is just to show that the feature is there and if you have a
.curlrc file, it can enable the feature
seamlessly.
Given the ECH feature requires OpenSSL >= 4, it will not make it to Debian 13, having a small chance of going to Debian 13 Backports (emphasis on small).
It should get to Debian Unstable and Debian Testing within the next couple of months as the OpenSSL GA release happens and gets packaged, but you should be able to install the package from Experimental in your Unstable and Testing systems without issues. It will also be in Debian 14 once it becomes the new Stable.
Stephen Farrell's presentation from OpenSSL Conference 2025 has a lot of background on the work involved:
They have been working on implementing ECH in open-source projects for years, something as big as this doesn't happen without lots of people dedicating both their paid and free times over it.
I ended up being the person who enabled it on Debian, which was pretty much the least amount of work between everyone involved, but hey it's fun flipping the switch and telling you about it.
Since 2025, the curl developers started organizing an yearly meeting with all maintainers of curl in Operating Systems. The 2026 edition happened in March 26th: https://github.com/curl/curl/wiki/curl-distro-discussion-2026.
Attendance was really good, and as you can imagine one of the topics of discussion was ECH, in which it was pointed out that having OpenSSL 4 was the main requirement but besides it nothing unusual was needed.
In Debian Experimental, we have been enabling HTTPS-RR since March 2025, and OpenSSL 4.0.0 alpha was packaged just recently (2026-03-13) by Sebastian Andrzej Siewior, it's time for the next step.
The curl distro meeting was just the motivation I needed to go ahead and enable it in Debian Experimental, so as part of our Debian Brasil Weekly Meetings I've prepared and uploaded the changes, while Carlos Henrique Lima Melara worked on addressing a recent test regression for Debian Unstable. Unfortunately sergiodj couldn't join and I'm sure he's jealous of the hacking session now.
While writing this, I've noticed one of the authors of the CloudFlare blogpost is the previous curl maintainer on Debian; Alessandro Ghedini let me take over the maintenance back in 2021 and today curl is maintained by a team of 4 people, it's nice to see Alessandro's involvement.
US courts generally rejecting equating criticism of Israel with antisemitism [Richard Stallman's Political Notes]
US courts are generally rejecting attempts to equate criticism of Israel or support for Palestinians' rights with antisemitism.
Ignorance, misunderstanding and obfuscation ended US-Iran nuclear talks [Richard Stallman's Political Notes]
*How ignorance, misunderstanding and obfuscation ended [US-] Iran nuclear talks.*
They had made substantial progress before they were abruptly ended when the US and Israel started to attack instead.
*Oman claims Israel pushed US into Iran war when deal [with Iran] was possible.*
WATCA bill [Richard Stallman's Political Notes]
The WATCA bill, which is one way of taxing the rich more, will provide only a small benefit for non-rich Americans. That's because its main method of helping them is by reducing their income tax, and poor people's income tax is already low.
In and of itself, WATCA is better than nothing, but we should focus on supporting other bills that would tax the rich more than that in order to help the non-rich more than that.
The imperialist says Israel attacked Iran gas wells without telling him [Richard Stallman's Political Notes]
The imperialist says Israel attacked Iran's gas wells without telling him, and he has ordered Israel not to attack them again.
Whether or not he is telling the truth about what happened, it is at least somewhat of a relief that he seems to realize how much any further such attacks would backfire.
Heavy-handed actions accelerating US's decline [Richard Stallman's Political Notes]
Owen Jones: *[the Bully] thinks brute force will arrest the US's decline. His heavy-handed actions in Iran are only accelerating it.*
Gulf of Hormuz closure sending enormus profits to rich people [Richard Stallman's Political Notes]
The closure of the Gulf of Hormuz is sending enormous windfall profits to a few rich people. There should be a windfall profits tax in place all the time for the sake of future fossil fuel price spikes, so that governments won't need to act fast.
Parents deported to Honduras had no chance to arrange childcare for their children [Richard Stallman's Political Notes]
* In interviews with dozens of parents deported to Honduras, as well as physicians and psychologists, government officials and staff at reception centers for deportees, researchers found that many parents were deported quickly after they were [jailed], without a chance to arrange for the care of their children.*
We understand the cause of this: deportation thugs are acting out hatred towards immigrants in general, and are eager for the chance to be cruel.
Christian Zionists want to help Israel conquer Middle East [Richard Stallman's Political Notes]
Christian Zionists want to help Israel conquer much of the Middle East, believing that then sacrifices will trigger biblical prophecies which will result in forcing Jews to convert to Christianity or else be damned.
It is not easy to get along with fanatics like that. It is unlikely that the prophecies would actually come true, but there is no telling what might they do if the situation arises and the prophecies do not come true.
Amazon Alexa to better understand speach uttered in a relexed manner [Richard Stallman's Political Notes]
A new upgrade of Amazon Alexa will be better able to understand speech uttered in a relaxed, usual manner. The better to snoop on you with, my dear.
New York City cops pressed charges against snowball fight participants [Richard Stallman's Political Notes]
New York City cops have pressed charges against some of the participants in a snowball fight which they entered, apparantly as an excuse to find fault with Mayor Mamdani.
Bondi treated Congress with contempt [Richard Stallman's Political Notes]
Bondi treated Congress with contempt by refusing to take an oath for her testimony.
At least she showed a minuscule level of respect for the oath to tell the truth — by refusing to take the oath and then lie anyway. That is a start, at least. Perhaps in the future she can be convinced to show truthfulness a little more respect, and then a little more, and so on.
Connection focused platforms less harmfull than algorithm-driven apps [Richard Stallman's Political Notes]
* World Happiness Report finds platforms focused on connection less harmful than algorithm-driven apps.* For example, Instagram was more damaging to mental health than WhatsApp.
Both of the client programs are nonfree software, thus damaging to users' freedom.
Canadian and daughter are in deportation prison [Richard Stallman's Political Notes]
The deportation thugs are once again working unpredictable cruelty. A Canadian who married an American, and her daughter, are in a deportation prison, being pressured to "self-deport". The thugs have given no explanation for jailing them despite their valid visas.
Pentagon ordered to cease political censorship policy [Richard Stallman's Political Notes]
*A judge ordered the Pentagon to cease its new political censorship policy for press coverage.*
US banks a step closer to weaker regulation [Richard Stallman's Political Notes]
The wrecker has granted the biggest US banks a step towards weaker regulation. Banks can cause a disastrous crash if they are not careful in how much and how readily they lend. That's what caused the 2008 financial crisis.
In Europe, the result was disaster for countries that needed deficit spending to get out of the recession but were banned by the Euro zone rules from doing that: Spain, Italy and especially Greece. But the crisis was profitable for the biggest banks, since governments were compelled to bail them out rather than allow them to actually fail.
Naturally, the biggest banks wanted to be allowed to do this again. And naturally the wrecker gave it to them.
Russia shutting off mobile phone networks [Richard Stallman's Political Notes]
In the name of "security", Russia is shutting off mobile phone networks, but in an unpredictable way which causes trouble for many activities, some of which Putin has no evident motive to shut down.
Ironically, it means people have to live the way I choose to live. It is a little inconvenient and much less vulnerable to surveillance.
Survivor from boat US military attacked [Richard Stallman's Political Notes]
Finally, there is a survivor from one of the boats that the US military attacked and sunk.
Maybe the survivor will testify about what the people on the boat were doing.
Woman arrested for "murder" for taking abortion pills [Richard Stallman's Political Notes]
A woman in Georgia has been arrested for "murder" for taking abortion pills.
Smokeless fuels produce ultrafine particles [Richard Stallman's Political Notes]
Burning "smokeless" fuels at home produces produce less particulate pollution of the usual size, but instead produces lots of ultrafine particles.
The usual particulate pollution damages people's health. Does the small particulate pollution do likewise?
Girl Genius for Friday, March 27, 2026 [Girl Genius]
The Girl Genius comic for Friday, March 27, 2026 has been posted.
Waking Up, p04 [Ctrl+Alt+Del Comic]
The post Waking Up, p04 appeared first on Ctrl+Alt+Del Comic.
Hope You're Hungry [The Stranger]
Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! by Anonymous
To the guy who chose to shout insults at me for parallel parking on a two-way street today:
I used my indicator way ahead of time and waited for a safe break in traffic to park. Parked the moment I got a break in one straight shot in spite of your honking that started the second after I stopped my car. Apparently, waiting six seconds and missing a green light was enough for you to roll down your window and scream at a woman you have never met and call her a "bitch."
We all experience frustration in Seattle traffic, but most have the decency to keep it to themselves rather than putting down a stranger over such a minor inconvenience. If this interaction was enough to put you over the edge, you must rarely get a break from your own self-righteous anger.
Special mention to everyone around who kept to themselves and didn't intervene.
I hope you choke on a bag of dicks.
Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! Send your unsigned rant, love letter, confession, or accusation to ianonymous@thestranger.com. Please remember to change the names of the innocent and the guilty.
Ticket Alert: Jungle, Mon Laferte, and More Seattle Events Going On Sale This Week [The Stranger]
Which shows will you be seated for? British funk trio Jungle has announced a new album and upcoming tour with a stop in Seattle this fall. Genre-spanning Chilean-Mexican star Mon Laferte brings her Femme Fatale Tour to the 5th Avenue Theatre. Plus, vocal powerhouse LeAnn Rimes celebrates 30 years of her debut major-label album Blue. Read on for details on those and other newly announced events, plus some news you can use.
ON SALE FRIDAY, MARCH 27MUSIC
Acid
Bath
Paramount Theatre (Sat Aug 8)
Altın Gün with Alex Maas
Showbox SoDo (Tues Sept 8)
The
Aquabats!
The Showbox (Sat June 13)
Sound Transit Considers Delaying Ballard Light Rail [The Stranger]
On Tuesday, Strauss shot an email out to residents, encouraging them to show up to the town hall with concerns about light rail. Only four people did. The 19 other speakers wanted to talk about homeless people living in RVs, road hazards, and yes, public safety. After the meeting, Strauss said he expected that. It is Ballard after all. by Micah Yip
As someone who usually light rails around the city, driving from Capitol Hill to Ballard was like enduring Dante’s nine levels of hell. Red-line traffic up I-5, east to west surface street chaos, Apple Maps ETA climbing. By the time I reached the Ballard Community Center for Councilmember Dan Strauss’ town hall last night, another 12 minutes had been added to my 35-minute commute.
The situation was too on-the-nose. It was Strauss’ first town hall since Sound Transit announced it’s considering delaying the long-promised and voter-approved Ballard Light Rail Extension. At a board retreat last week, Sound Transit presented members three options to address its $34.5 billion shortfall over the next 20 years, none of which included a Ballard stop. “Ballard Dan” Strauss, who represents the neighborhood, issued a news release expressing his disappointment.
“The Ballard Link Extension is projected to serve the most riders of any project in Sound Transit history,” he wrote. “Sound Transit needs to sharpen their pencils, do the analysis, and bring us a plan that gets to Ballard.”
On Tuesday, Strauss shot an email out to constituents, informing them of the Sound Transit developments and reminding them to RSVP for the town hall and send in their questions. Only four people talked about the light rail. The 19 other speakers wanted to talk about homeless people living in RVs, road hazards, and yes, public safety. After the meeting, Strauss said he expected that. It is Ballard after all.
One person asked if everything had been done to minimize the cost of the Ballard link, considering Sound Transit tacked on the cost of the planned second light rail tunnel through downtown Seattle, which would expand the line’s capacity and allow more trains to run.
That’s one of Strauss’ gripes. In 2021, when Sound Transit updated cost estimates and reworked the Sound Transit 3 plan, it separated the West Seattle–Ballard project into two different ones. The second tunnel—a major, expensive piece of infrastructure—stayed tied to the Ballard segment, which is why Ballard’s extension seems so costly on paper.
“We have to look at cost sharing for that downtown tunnel because the region benefits from it,” Strauss said.
Miss Kimball, an eight-year Ballardite in her 80s, can’t drive. Getting anywhere—to the hospital in First Hill after a recent stroke, or to the theater—meant waiting for transfers in the rain and snow. We need better service “to take part in all of the arts and culture that we have in the city,” she told Strauss. He agreed.
King County Metro should have provided that service, he said, after the Seattle Transit Measure was passed by voters in 2020 to fund more metro hours.
“We have less service today than we did in the pandemic,” Strauss said. “Metro is overlooking Ballard. They’re not spending our money.”
Kirk Robbins, who served alongside Strauss on the Ballard District Council, asked Strauss how they could get Sound Transit to come up with an option that includes a Ballard link.
Strauss said he told the board that they’ve zoned Ballard specifically for light rail and that they need to revisit the drawing board. “I’m not gonna give up on it,” he told Robbins.
Green Lake resident Thomas Powers, a volunteer with Seattle Subway, asked if Strauss considered new revenue sources, like a special tax district.
“We’re looking at all of it,” Strauss said. “But for a special district where we can tax ourselves more, we don’t have enough people to fund everything.”
While the Ballard light rail fans didn’t turn out in force
to Strauss’ town hall, they appeared to pack the room at
Thursday’s Sound Transit board meeting. Seattle Subway
has
organized a letter writing campaign and a call to action.
“Solutions to ST3 problems absolutely exist, Sound Transit
just needs to hear that we, the public, demand they use
them,” reads the rallying cry on their site. Those upcoming
board meetings should be interesting.
Correction: A previous version of this story incorrectly stated
there wasn't a direct bus service from Ballard to
downtown.
Petter Reinholdtsen: The 2026 LinuxCNC Norwegian Developer Gathering [Planet Debian]
The LinuxCNC project continues to thrive. I believe this great software system for numerical control of machines such as milling machines, lathes, plasma cutters, routers, cutting machines, robots, and hexapods would benefit even more from in-person developer gatherings. Therefore, we plan to organise another gathering this summer as well.
We invite you to a small LinuxCNC and free software fabrication workshop/gathering in Norway this summer, over the weekend starting June 26th, 2026. As last year, we maintain a slightly broader scope and welcome people outside the LinuxCNC community. As before, we suggest to organise it as an unconference, where participants create the program upon arrival.
The location is a metal workshop 15 minutes' drive from Gardermoen airport (OSL), with plenty of space and a hotel just 5 minutes away by car. We plan to fire up the barbecue in the evenings. Please let us know if you would like to join. We track the list of participants on a simple pad. Please add yourself there if you are interested in joining.
Our friends over at the TS Robotics team at the University of Oslo have offered to handle any money involved with this gathering, that is, holding sponsor funds and paying the bills. We hope to secure enough sponsors to cover food, lodging, and travel. So far, Debian has offered to sponsor part of the expenses, which should cover food and a bit more. Please get in touch if you would like to help sponsor the gathering.
As usual, if you use Bitcoin and wish to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
Windows 95 defenses against installers that overwrite a file with an older version [OSnews]
I’ll never grow tired of reading about the crazy tricks the Windows 95 development team employed to make the user experience as seamless as they could given the constraints they were dealing with. During the 16bit Windows days, application installers could replace system components with newer versions if such was necessary. Installers were supposed to do a version check, but many of them didn’t follow this guidance. When moving to Windows 95, this meant installers ended up replacing Windows 95 system components with Windows 3.x versions, which wasn’t exactly a goods thing.
So, they came up with a solution.
Windows 95 worked around this by keeping a backup copy of commonly-overwritten files in a hidden C:\Windows\SYSBCKUP directory. Whenever an installer finished, Windows went and checked whether any of these commonly-overwritten files had indeed been overwritten. If so, and the replacement has a higher version number than the one in the SYSBCKUP directory, then the replacement was copied into the SYSBCKUP directory for safekeeping. Conversely, if the replacement has a lower version number than the one in the SYSBCKUP directory, then the copy from SYSBCKUP was copied on top of the rogue replacement.
↫ Raymond Chen
All of this happened entirely silently, and neither the installers nor the user had any idea this was happening. The Windows 95 team tried other solutions, like just making it impossible to replace system components with older versions entirely, but that caused many installers to break. Some installers apparently even went rogue and would create a batch file that would replace the system components upon a reboot, before Windows 95 could perform its silent fixes. Wild.
I used Windows 95 extensively, and had no idea this was a thing.
US regulator bans imports of new foreign-made routers, citing security concerns [OSnews]
The U.S. Federal Communications Commission said on Monday it was banning the import of all new foreign-made consumer routers, the latest crackdown on Chinese-made electronic gear over security concerns.
China is estimated to control at least 60% of the U.S. market for home routers, boxes that connect computers, phones, and smart devices to the internet.
↫ David Shepardson at Reuters
I’m sure the American public will be thrilled to find out yet another necessity has drastically increased in price.
Apple discontinues the Mac Pro with no plans for future hardware [OSnews]
It’s the end of an era: Apple has confirmed to 9to5Mac that the Mac Pro is being discontinued. It has been removed from Apple’s website as of Thursday afternoon. The “buy” page on Apple’s website for the Mac Pro now redirects to the Mac’s homepage, where all references have been removed.
Apple has also confirmed to 9to5Mac that it has no plans to offer future Mac Pro hardware.
↫ Chance Miller at 9To5Mac
If a Mac Pro falls in the back of the Apple Store and there’s no one around to hear it, does it make a sound?
The Stranger Has a New News Writer! [The Stranger]
Fresh meat. by Stranger Staff
Our new writer Hunter Pauli is a hometown boy. Most recently a reporter for The Inlander, he was born and raised in Seattle. After graduating from the Center School, he served two years in AmeriCorps before attending J-school at University of Montana.
He’s done all kinds of jobs in various newsrooms, but he’s mostly been a roving investigative reporter, covering everything from tar sands pipelines, local Nazi collaborators, to the corrupt Russian oligarch in your backyard. We’re pleased to have him, and asked a few stupid questions to celebrate his arrival.
You’re from Seattle, but you’ve spent your youth travelling The West. Are you coming home to rest?
I wish. There’s no jobs left in the interior that pay a living wage now that housing is almost as expensive in places like Montana as it is in Seattle without the high wages to compensate. I’m all your problem now (again).
Has Seattle gone to the dogs since you’ve been gone? Yes or yes?
Seattle was struggling with spiraling inequality and unaffordable housing when I left during the Recession, but luckily the city fathers fixed all that while I was away.
Once, you were turned away from a restaurant in Montana because you were so dirty after the rodeo. Do you still get this dirty?
Journalism is a far dirtier industry than rodeo. The stains never really come out, the maître d’s can still smell it on me.
Tell us a rodeo secret.
If a steer snaps its leg they turn up the volume on the arena’s audio board so you don’t hear the gunshot.
You’ve shot a lot of people, on video. Who stands out?
Dolores Huerta was the most inspiring, Gavin Newsom the least. Shaq stands tallest of all.
Share your worst opinion.
Seattle’s business class should force taxpayers to subsidize the reopening of the old Brooks Brothers on 5th Avenue so people here stop dressing so unprofessionally in the workplace.
Do you kill spiders, ask others to kill spiders for you, or are you one of those sick people who trap house spiders under cups so you can release them to die of exposure?
I kill without hesitation.
A Google search revealed that, in 2014, you tried marrying your straight male friend to prove a point about discriminatory laws. Were you influenced by I Now Pronounce You Chuck & Larry, or by an internal sense of social justice?
My ethics are a 50/50 split between what I learned from Happy Madison Productions and what I learned in Seattle Public Schools.
Are you still, as USA Today put it, one of the most in-your-face student journalists reporting and writing today?
Technically I graduated long ago but I’m still quite direct in my reporting and writing.
Your great-great-great-grandfather helped found BYU. I know you’re not Mormon, but do you enjoy their loaded sodas?
No, I am a grown-ass man.
Where do you think the Garden of Eden is?
The Garden of Eden is in Discovery Park, I’ve seen it.
Do you know the location of the golden plates?
That part is apocryphal.
Do you have other interests?
I have no hobbies.
Which Seattle public official should be the most scared that you’re in town?
When I was in AmeriCorps NCCC it was Seattle City Councilmember Dan Strauss’ responsibility as a team leader on watch to catch me drinking underage in the barracks in Sacramento. He failed. I won’t.
Should the Sonics return?
As a card carrying member of the International Cinematographers Guild IATSE Local 600 I think the NBA’s return to Seattle would create a groundswell of good-paying union jobs, and now that Howard Schultz is gone it would be too poetic not to.
Fuck, Marry, Kill: Harborview, Virginia Mason, and Swedish?
Fuck Virginia Mason, Marry Swedish (they delivered me), kill Virginia Mason.
Deportation-protests as terror, US [Richard Stallman's Political Notes]
*Why We Have to Fight Back Against [deportation] Protesters' Terror Convictions.*
Democracy metrics in steep backslide, US [Richard Stallman's Political Notes]
According to the V-Dem Institute, democracy is in rapid decline globally, and the US is leading the decline.
World-wide, only 18 countries are observed to be democratizing. The article does not give a comparable count of countries that are autocratizing, but they are 40% of the world's population.
Heatwave covering CA, NV [Richard Stallman's Political Notes]
Temperatures in California, Nevada and Arizona are 22-25 °F above normal. Temperatures are about to reach as much as 108°F. The heat will put some people's health in danger, and it's only the very beginning of spring.
If part of July is 22-25 °F above normal, that will kill thousands, or perhaps tens of thousands. This is global heating.
rss.network sounds nice. What would it be?
Traffic Violation! License Plate Reader Mission Creep Is Already Here [Deeplinks]
A new report from 404 Media sheds light on how automated license plate readers (ALPRs) could be used beyond the press releases and glossy marketing materials put out by law enforcement agencies and ALPR vendors. In December 2025, Georgia State Patrol ticketed a motorcyclist for holding a cell phone in his hand. According to the report, the ticket read, “CAPTURED ON FLOCK CAMERA 31 MM 1 HOLDING PHONE IN LEFT HAND.”
If you’re thinking that this sounds outside of the scope of what ALPRs are supposed to do, you’re right. In November 2025, Flock Safety, the maker of the ALPR in question, wrote a post about how they definitely are in compliance with the Fourth Amendment to the U.S. Constitution. In this post, which highlighted what ALPRs are and what they are not, the company writes: “What it is not: Flock ALPR does not perform facial recognition, does not store biometrics, cannot be queried to find people, and is not used to enforce traffic violations.” (emphasis added)
Well, apparently their customers never got the memo and apparently the technology’s design does not explicitly prevent behavior the company officially and publicly disavows.
Or at least this used to be the case: Flock now lists six different companies providing traffic enforcement technology on its “Partner program” site. Public records also show that speed enforcement cameras have been connected to Flock's ALPR network.
EFF and other privacy advocates have long warned about mission creep when it comes to surveillance infrastructure. Police often swear that a piece of technology will only be used in a particular set of circumstances or to fight only the most serious crimes only to utilize it to fight petty crimes or watch protests.
We continue to urge cities, states, and even companies to end their relationship with Flock Safety because of the incompatibility between the mass surveillance it enables and its inability to protect civil liberties—including preventing mission creep.
Gen X Is Back to the Future [The Stranger]
Will the world as we know it even reach this year’s midterm elections? This question, which might sound a bit alarmist, now has to be taken seriously because the stage for World War III has been set in the Middle East. by Charles Mudede
It is nothing but terrible that the track, “World Destruction,” that best captured the key anxiety of the 80s, nuclear war, was produced and performed by two men who are now identified as creeps, John Lyndon (aka the Sex Pistols’ Johnny Rotten, now a loud member of UK’s MAGA) and Afrika Bambaataa (the hiphop pioneer was “accused of child sexual abuse multiple times”). But the 1984 track got it right. The drums exploding like extinction-level detonations; the hard rock guitar stabs; the stressed and strained synthesized chorus. The whole maddening idea that the Soviet Union and the United States had, combined, enough nuclear warheads to destroy the world not once but hundreds of times. This was “World Destruction,” a track that resurfaced in my thoughts because of Operation Epic War, the US’s current and unprovoked war with Iran. It too could go nuclear at any moment.
Now is a good time to talk about my generation, Gen X. We were the first age group to experience the decline of live music and the ascendency of music generated by machines (samplers, synthesizers, beat boxes). We also experienced the first domestic-grade personal computers, whose word processors replaced the electric typewriter; and the first to use cordless phones. We were also introduced not only to the internet but also its influence on the cinema and literature of science fiction (cyberpunk).
Many of these monumental transformations in consumer products are described by music and culture critic Roy Christopher in his new book Post-Self. So considerable and novel were the new receivers, distributors, and processors of data that cyberpunk, a movement at the heart of Post-Self, imagined a future where we could download our self-awareness into the electronic ether of cyberspace and live for as long as no one in the real world pulled the plug.
My generation was also the last to live, as young adults, within a social reality described as the Cold War. We saw the bomb shelters, and were taught in school to “duck and cover” if a nuclear weapon, launched by the Soviets or its allies, hit our city.
Indeed, In Post-Self, Roy Christopher recalls watching an episode of the The Twilight Zone called “Time Enough at Last,” which was about a bespectacled and bibliophilic bank teller who survives the detonation of an H-bomb because he happened to be in the bank’s vault. He then roams the ruins of a world that has no other people, but lots of books to read.The bank teller, however, accidently breaks his glasses and is left practically blind. “The trepidation of that tragic moment,” writes Christopher, “recombinant with worries of the apocalypse, was a seed planted in my head. And more than any other Cold War-era image of imminent destruction splashed on the television during my childhood…”
All American Gen Xers have similar stories. For me, it was the “Daisy” ad. Produced in 1964 as a campaign commercial for Lyndon B. Johnson’s presidential run, it shows a girl pulling the petals from a daisy as she imperfectly counts. Right after pulling the final petal, we hear a loud robotic voice begin a countdown to the launching of nuclear weapons. The girl looks up, her face is frozen, and we zoom into her right eye’s iris, which reflects the mushroom cloud of a nuclear explosion. This is the last thing she will ever see. The end of the world brought to you by Johnson’s opponent, a trigger-happy Cold War warrior Barry Goldwater.
The fall of the Berlin Wall in 1989 brought the Cold War to an unexpected end, and with it the expectation that we were only a button away from a nuclear apocalypse. We placed that fear into the background and turned our attention to another anthropogenic crisis that, though achieving mainstream status in the 1960s with books such as Silent Spring, obtained an eschatological register in the 1980s, global warming: the rise of greenhouse gases, the depletion of the ozone layer, and so on.
That movement, however, never produced anything that matched the cultural impact of the “Daisy” ad, or The Day After, a TV show watched by over 100 million people when first aired by ABC on November 20, 1983. Later, President Ronald Reagan would write in his diary that he was seriously spooked by the show’s realism. In fact, he credited his decision to sign a treaty with the Soviets that banned short- and medium-range missiles to the TV show.
Nothing of this kind has happened with the crisis of climate change. We are still burning fossil fuels with an abandon that’s nothing short of astonishing. No matter how bad or extreme our weather gets, we still demand, above all, cheap gas. And it’s likely that Donald Trump’s party might, during the midterm elections, lose both the House of Representatives and the Senate because of “pain at the pump.”
CNBC reports that the “Democratic Congressional Campaign Committee shared with CNBC first its new ad campaigned targeting closely-watched districts across the country and lashing out at the GOP for high gas prices.” So, the Dems are promising to liberate even more carbon into the atmosphere. No reforms. No concern about the environment. Just the usual cheap, but socially costly, consumption of fossil fuels.
But will the world as we know it even reach this year’s midterm elections? This question, which might sound a bit alarmist, now has to be taken seriously because the stage for World War III has been set in the Middle East. At any moment, one might open their phone and read that nuclear missiles have obliterated Tehran and killed millions. This catastrophe, which could have been avoided if Trump had not tossed Obama’s nuclear deal with Iran to the dogs, and is exacerbated by the war in the Ukraine, would soon be followed by others because the key (but unofficial) belligerents in this crisis are the world’s top nuclear superpowers: Russia and China vs the USA and (a reluctant) Europe. It would take only a few weeks to kill billions of humans and leave the rest, the survivors, facing extinction by way of cancers caused by radiation exposure or a long and cold nuclear winter.
Let’s look at the movie Oppenheimer for a minute. A little short of three years ago, we watched this summer blockbuster about the inauguration of the Cold War and the amassing of extinction-level weapons from what appeared to be the safe distance of the third decade of the 21st century. Oppenheimer wasn’t about our present situation, but about something that happened many years ago (July 16, 1945); happened long before the collapse of the Soviet Union, which also happened long ago. All we had to deal with between then and today—a span of 35 years—were pesky missiles fired over Japan by an anachronism called North Korea. Imagine showing Oppenheimer this summer. How things have changed in such a short space of time. Thanks to the US’s current war with Iran, a war instigated by Trump for reasons that remain very much in the dark, the corpse of that first blast in New Mexico has been reanimated. And Gen X has found itself back in the future.
This time around, however, things might actually be worse because the military is turning more and more of its decision making powers over to AI, which, as Jacobin reports in “Thermonuclear Slop and the Return of the Bomb,” recommends “nuclear strikes in 95 percent” of simulated cases. What can we do about this very dangerous situation? Jacobin recommends reviving the anti-nuclear movement. It had some success in the past; it might have some success—or at least more success than the environmental movement—today. (By the way, some environmentalists have promoted nuclear power as an exit from our current dependency on fossil fuels.)
But what a true Gen Xer will also recommend is that one come to terms with their maker—in the secular sense. Why? For one, getting an anti-nuclear movement started takes time (which Operation Epic Fury obliterated on day one); and, two, an existential threat of this scale, a global scale, demands a very personal existential resolve that, in itself, is instructive and even spiritual. What the Cold War taught many of us was the fragility of the only world we will ever know and call home.
Beeper + RSS, please [Scripting News]
When I heard about Matt's product Beeper I thought wow what if that were on the RSS network.
I think RSS should be here. Makes sense doesn't it?

Why not an open independent format from nowhere that no one objects to you using and will not do anything ever to turn you off. It seems it would be fairly easy to add two-way support. :-)
Slog AM: Potties for Pioneer Square, Olympics Bans Trans Women, Election Fraud Activist Guilty of Election Fraud [The Stranger]
The Stranger's morning news roundup. by Nathalie Graham
King County Assessor Charged in Stalking Case: Last summer, King County Assessor John Arthur Wilson—who was running for King County Executive at the time—was arrested for violating a no-contact order from his ex-fiancée. Wilson had allegedly stalked and harassed his ex, and she had a temporary restraining order against him. Because of conflicts of interest with the assessor's office, the King County Prosecuting Attorney's Office couldn't handle the charges, so they handed the case to the Snohomish County Prosecutor. But the Seattle City Attorney ended up filing the charges. It’s unclear why. Wilson was charged in Seattle Municipal Court. He’s still the King County Assessor, though he says he will not run for re-election.
In Sonics News: There's actually nothing to be excited about yet, you basketball babies. In a unanimous vote, the NBA Board of Governors gave Commissioner Adam Silver the green light to hold formal talks with Seattle and Las Vegas about maybe expanding the league to one or both of the cities for the 2028-2029 season. Don't hold your breath. A final answer might not come until the end of this calendar year. In the meantime, go to a Storm game?
Landslide Blues: Northbound I-5 near Bellingham is still closed after 12 million pounds of earth fell onto it seven days ago. State transportation crews are doing what they can to secure the slide-prone slope above the roadway, but as KING5 reports, it all takes time. They must clear loose trees and rocks on the hillside and then bolt the slope back into place. The whole thing is snarling traffic and disrupting shipping between the US and Canada.
Pioneer Square Piss Boxes: After years of failed attempts to give the public a place to piss in peace that is not an alleyway or a Starbucks, Seattle is once again trying to add new bathrooms to its stock. The Seattle Department of Transportation is contracting with private company Throne Labs to install "11 freestanding restrooms across the region, each at cost of around $100,000 a year," reports PubliCola. That's pretty cheap considering Seattle's last potty proposal cost $5 million for four toilets. The Thrones will, of course, only be accessible via "an app, a QR code, text message, or an entry card." You can bet your ass Throne will be keeping tabs on customers. User reviews and sensors in each unit can help identify any restroom rascals. The first two Thrones will come to Pioneer Square.
The Weather: There will be sun today. It's spring, though, so anything can happen.
Instagram Addicts Non-Anonymous: Raise your hand if you have been personally victimized by doomscrolling. A 20-year-old woman sued Meta and Google for her childhood addictions to Instagram and YouTube which saddled her with anxiety, depression, and body dysmorphia. Inventions like "infinite scroll" kept the plaintiff hooked on the apps. A Los Angeles jury ordered the tech companies must pay $6 million in damages—$3 million in compensatory damages, and another $3 million in punitive damages. Meta will have to cough up 70 percent of the funds, Google will pay the other 30 percent. This was the first case of its kind to go to trial, but thousands of plaintiffs across the country have filed similar suits, like Tuesday’s New Mexico trial regarding child exploitation and user safety. Meta says it will appeal the LA court’s ruling.
Timely: Meta laid off several hundred people on Wednesday. The cuts hit multiple divisions across the company, CNBC reports, like "Facebook, global operations, recruiting, sales and its virtual reality division Reality Labs." Meta's big plan is to funnel resources into AI.
Sad Days for American Science: Top NASA climate scientist Kate Marvel resigned from her position on Wednesday. She blamed the Trump administration's attack on science. Marvel said that none of her internally funded projects actually got funded once Trump took office. You can read her resignation letter here. The New York Times reports that Marvel is one of around 95,000 federal science employees who are no longer in their roles post-Trump 2.0 due to "layoffs, retirements, or resignations." This is catastrophic for American science.
Despite living in climate denial central, the effects of climate change are real and very much here. California's dismal snowpack is nearing record lows and spring heatwaves are melting whatever's left. "Nearly every snow-measuring station in the Sierra has lost more than a foot of snow in the 10 days since the heat wave kicked into full gear," SFGate reports. "A melt of this rate is a big deal any time, but in March it’s unheard of,” hydrologist Mike Hittle told the paper.
It’s been a brutal month for California’s snowpack, which is now at just 25% of normal.
The snowpack is now 8% of normal in the northern Sierra, 28% of normal in the central Sierra and 44% of normal in the southern Sierra.
NASA satellite images from Feb. 22, March 6 and March 24.
— Anthony Edwards (@edwardsanthonyb.bsky.social) March 25, 2026 at 3:20 PM
[image or embed]
Meanwhile, War: Israel says it killed the head of Iran's navy in an airstrike. After Tehran rejected Trump's 15-point ceasefire plan the president is now publicly threatening Tehran in Truth Social posts to "get serious soon" on these negotiations. He also claims Iran is "begging for a deal." Strange tactic, but hey, he’s the artist of the deal.
Olympics Says It’s Banning Trans Women Athletes: The International Olympic Committee announced a ban on transgender women from participating in women’s sporting events at the 2028 Summer Olympics in Los Angeles. Trans women athletes haven’t been competing in the Olympics. So, what’s this really about? The committee has also banned cis or intersex women with male testosterone levels or male chromosomes. Any athlete who wants to compete in a female sport will have to prove their biological gender with a cheek swab or saliva test. No one wins when women and womanhood are scrutinized like this.
We're all trying to find the guy who did this: Harry Wait, a Wisconsin man who believes the 2020 election was stolen and leads a group that decries election fraud, was convicted of election fraud. Wait was found guilty of two misdemeanor election fraud charges and one felony identity theft charge for requesting the absentee ballots of Republican state Assembly Speaker Robin Vos and Democratic Racine Mayor Cory Mason without their consent. Of the charges, Wait said, "You got to expect to pay some costs sometimes when you are trying to work for the public good." He also said he "would do it again."
It Was Opening Day: It's officially baseball season. Now... was this symbolism?
it's so cool that they exploded the US flag at the MLB season opener. baseball getting woker.
— tuck woodstock (@tuck.bsky.social) March 25, 2026 at 5:27 PM
[image or embed]
Today Is The Mariners' Opening Day: See you all at T-Mobile Park. Here's this to get you into the mood.
Supreme Court Agrees With EFF: ISPs Don't Have To Be Copyright Enforcers [Deeplinks]
If your ISP can be liable for huge amounts of money for not terminating your access to the internet because of accusations that you—or someone in your household or college network—has committed copyright infringement, that is dangerous. We live in a world where high speed internet access is a necessity for participation in everyday life. That’s why liability for ISPs for their customers’ actions should not be expanded.
Last fall, EFF filed an amicus brief urging the U.S. Supreme Court to reject an expansive theory of secondary copyright liability that threatened to impose massive damages on internet service providers and other technology companies simply for offering widely used services. Yesterday, the Court agreed.
In Cox v. Sony, the Court reversed a Fourth Circuit decision that had upheld a billion-dollar verdict against internet provider Cox Communications. Writing for the majority, Justice Thomas explained that contributory liability is limited to two situations: when a defendant actively induces infringement, or when it provides a product or service that it knows is tailored for infringement.
This framework closely tracks the approach EFF urged in our amicus brief. As we explained, courts should look to patent law for guidance in defining the boundaries of secondary copyright liability. Patent law recognizes liability where a defendant actively induces infringement, or distributes a product knowing that it lacks substantial non-infringing uses. The Court’s opinion adopts that same basic structure.
EFF also emphasized the broader public interest at stake in preserving these limits. Expansive theories of secondary liability do not just affect large internet providers. They can chill innovation, threaten smaller technology companies, and undermine the development of general-purpose tools that millions of people rely on for lawful speech, creativity, education, and access to information. When liability turns on generalized knowledge that some users may infringe, service providers face pressure to over-police user activity or withdraw useful services altogether.
The Court also made clear that mere knowledge that some customers use a service to infringe is not enough. Copyright holders must show that the provider intended its service to be used for infringement. That intent can be established only through active inducement or by showing that the service is specifically designed for unlawful uses—not simply because the service provider failed to take affirmative steps to prevent infringement.
Applying this standard, the Court held that Cox could not be liable. There was no evidence that Cox encouraged or promoted infringement. The record instead showed that Cox implemented warning systems, suspended service, and in some cases terminated accounts in an effort to discourage unlawful activity.
Nor was Cox’s internet access service tailored to infringement. The Court emphasized that general-purpose internet connectivity is capable of substantial lawful uses. Treating the provision of such services as contributory infringement would improperly expand secondary liability beyond the limits recognized in prior Supreme Court decisions.
The Court also rejected the Fourth Circuit’s broader rule that supplying a service with knowledge it may be used to infringe is itself sufficient for liability. That theory conflicts with decades of precedent warning against imposing copyright liability based solely on knowledge or a failure to take additional preventive steps.
EFF is pleased with yesterday’s opinion. We will continue to advocate for the public’s ability to build, use, and innovate with new technologies.
Link to our amicus brief:
https://www.eff.org/document/us-s-ct-cox-v-sony-eff-et-al-amicus-brief
Link to the opinion:
https://www.supremecourt.gov/opinions/25pdf/24-171_bq7d.pdf
This piece explains the tragedy of how we've set up communication using our networks, all based on exclusive products, rather than standards which mean you can use whatever software you want for more and more of your communication.
Send this video to your favorite Democrat and let them know that we would pay money to have this video run as an ad running everywhere, exactly as-is, no editing, not made glamorous. This is the truth that absolutely is not getting out about the law the Repubs want. We need to communicate with each other using the amazing tools we have at our disposal now in the third decade of the freaking 21st century.
Why doesn’t WM_ENTERIDLE work if the dialog box is a MessageBox? [The Old New Thing]
The trick is that I used the common file open dialog instead of
a simple MessageBox. Indeed, if you replace the
call to GetOpenFileName with a call
to MessageBox, then no
WM_ENTERIDLE message arrives, and you get no
beeping. What’s going on?
A dialog can suppress the WM_ENTERIDLE
message by adding the DS_NOIDLEMSG dialog
style to its template. And that’s what the template used by
the MessageBox function does.
So the WM_ENTERIDLE trick does require a
small amount of cooperation from the dialog box, namely that it
doesn’t disable WM_ENTERIDLE messages.
But say you can guarantee the cooperation of the dialog box
because you are the dialog box. Right now, the
WM_ENTERIDLE message allows a dialog
owner to be notified when the dialog message loop is about
to go idle. But what if the dialog box itself wants to know, so it
can customize its own message loop?
We’ll look at that next time.
The post Why doesn’t <CODE>WM_<WBR>ENTERIDLE</CODE> work if the dialog box is a <CODE>MessageBox</CODE>? appeared first on The Old New Thing.
The forge is our new home (Fedora Community Blog) [LWN.net]
Tomáš Hrčka has announced that the Forgejo-based Fedora Forge is now a fully operational collaborative-development platform; it is ready for use by the larger Fedora community, which means the homegrown Pagure platform's days are numbered:
While pagure.io has been a vital part of our community for many years, the time has come to retire our homegrown forge and transition to this powerful new tool.
The final cutover is planned for Flock to Fedora 2026. We strongly encourage teams to migrate their projects well before the conference to ensure a smooth transition. The pagure.io migration is only the first step in a broader infrastructure modernization effort. By the 2027 Fedora 46 release, we plan to retire all remaining Pagure instances across the project, including the package source repositories on src.fedoraproject.org. Getting familiar with Fedora Forge now will help ensure your team is ready as the rest of the Fedora ecosystem transitions.
There is a migration guide for Fedora community members that own projects hosted on Pagure and need to move to the new forge.
Well, It Finally Happened [Whatever]
I always wondered which of my books would be the first to be banned, and now I know:
As noted above, I’ll likely have more to say about this when I get back the JoCo Cruise, but for now, two points, which I may expand upon in a later post:
1. On a personal level, I don’t expect this ban to move the needle much, positively or negatively, for sales of Lock In, which has been out for a dozen years now;
2. Please refrain from exclaiming “Having your book banned just means you’ll sell more!” or something similar in the comments. One, it’s absolutely not true for the vast majority of books that get banned; the usual result is a net loss for authors and publishers. Two, this is sort of comment that, however well-intentioned to be supportive, minimizes the seriousness of book banning as an intentional policy. The busybodies banning books in New Braunfels targeted more than 1,500 books, not just mine. None of that is a thing to be happy about; there is no actual upside to book bans.
— JS
My linkblog was down. Thanks to Scott Hanson it's back up!
[$] Vibe-coded ext4 for OpenBSD [LWN.net]
A number of projects have been struggling with the question of which submissions created by large language models (LLMs), if any, should be accepted into their code base. This discussion has been further muddied by efforts to use LLM-driven reimplemention as a way to remove copyleft restrictions from a body of existing code, as recently happened with the Python chardet module. In this context, an attempt to introduce an LLM-generated implementation of the Linux ext4 filesystem into OpenBSD was always going to create some fireworks, but that project has its own, clearly defined reasons for looking askance at such submissions.
If you're using FeedLand and running a WordPress blog, you can install a blogroll just like the one I have at scripting.com or blogroll.social.
1341: Also Fully Biodegradable [Order of the Stick]
http://www.giantitp.com/comics/oots1341.html
Security updates for Thursday [LWN.net]
Security updates have been issued by Debian (awstats, firefox-esr, and nss), Fedora (chromium, dotnet10.0, dotnet8.0, dotnet9.0, freerdp, and wireshark), Mageia (graphicsmagick and xen), Oracle (mysql:8.4 and nginx), Red Hat (podman), Slackware (bind and tigervnc), SUSE (azure-storage-azcopy, firefox-esr, giflib, glances-common, govulncheck-vulndb, grafana, kernel, libpng16, libsoup, mumble, net-snmp, perl-Crypt-URandom, pgvector-devel, pnpm, postgresql17, Prometheus, protobuf, python-cbor2, python-Jinja2, python-simpleeval, python311-dynaconf, python311-pydicom, python313-PyMuPDF, salt, snpguest, systemd, and vim), and Ubuntu (bind9, linux-azure, linux-azure, linux-azure-6.17, linux-azure-6.8, and mbedtls).
The Missing Layer in Agentic AI [Radar]
Imagine you deploy an autonomous AI agent to production. Day one is a success: The demos are fantastic; the reasoning is sharp. But before handing over real authority, uncomfortable questions emerge.
What happens when the agent misinterprets a locale-specific decimal separator, turning a position of 15.500 ETH (15 and a half) into an order for 15,500 ETH (15 thousand) on leverage? What if a dropped connection leaves it looping on stale state, draining your LLM request quota in minutes?
What if it makes a perfect decision, but the market moves just
before execution? What if it hallucinates a parameter like
force_execution=True—do you sanitize it or crash
downstream? And can it reliably ignore a prompt injection buried in
a web page?
Finally, if an API call times out without acknowledgment, do you retry and risk duplicating a $50K transaction, or drop it?
When these scenarios occur, megabytes of prompt logs won’t explain the failure. And adding “please be careful” to the system prompt acts as a superstition, not an engineering control.
I encountered these failure modes firsthand while building an autonomous system for live financial markets. It became clear that these were not model failures but execution boundary failures. While RL-based fine-tuning can improve reasoning quality, it cannot solve infrastructure realities like network timeouts, race conditions, or dropped connections.
The real issues are architectural gaps: contract violations, data integrity issues, context staleness, decision-execution gaps, and network unreliability.
These are infrastructure problems, not intelligence problems.
While LLMs excel at orchestration, they lack the “kernel boundary” needed to enforce state integrity, idempotency, and transactional safety where decisions meet the real world.
Consider modern operating system design. OS architectures separate “user space” (unprivileged computation) from “kernel space” (privileged state modification). Processes in user space can perform complex operations and request actions but cannot directly modify system state. The kernel validates every request deterministically before allowing side effects.
AI agents need the same structure. The agent interprets context and proposes intent, but the actual execution requires a privileged deterministic boundary. This layer, the Decision Intelligence Runtime (DIR), separates probabilistic reasoning from real-world execution.
The runtime sits between agent reasoning and external APIs, maintaining a context store, a centralized, immutable record ensuring the runtime holds the “single source of truth,” while agents operate only on temporary snapshots. It receives proposed intents, validates them against hard engineering rules, and handles execution. Ideally, an agent should never directly manage API credentials or “own” the connection to the external world, even for read-only access. Instead, the runtime should act as a proxy, providing the agent with an immutable context snapshot while keeping the actual keys in the privileged kernel space.
Figure 1: High-level design (HLD) of the Decision
Intelligence Runtime, illustrating the separation of user space
reasoning from kernel space execution
Bringing engineering rigor to probabilistic AI requires implementing five familiar architectural pillars.
Although several examples in this article use a trading simulation for concreteness, the same structure applies to healthcare workflows, logistics orchestration, and industrial control systems.
The landscape of agent guardrails has expanded rapidly. Frameworks like LangChain and LangGraph operate in user space, focusing on reasoning orchestration, while tools like Anthropic’s Constitutional AI and Pydantic schemas validate outputs at inference time. DIR, by contrast, operates at the execution boundary, the kernel space, enforcing contracts, business logic, and audit trails after reasoning is complete.
Both are complementary. DIR is intended as a safety layer for mission-critical systems.
In a secure system, external input is never trusted by default. The output of an AI agent is exactly that: external input. The proposed architecture treats the agent not as a trusted administrator, but as an untrusted user submitting a form. Its output is structured as a policy proposal—a claim that it wants to perform an action, not an order that it will perform it. This is the start of a Zero Trust approach to agentic actions.
Here is an example of a policy proposal from a trading agent:
proposal = PolicyProposal(
dfid="550e8400-e29b-41d4-a716-446655440000", # Trace ID (see Sec 5)
agent_id="crypto_position_manager_01",
policy_kind="TAKE_PROFIT",
params={
"instrument": "ETH-USD",
"quantity": 0.5,
"execution_type": "MARKET"
},
reasoning="Profit target of +3.2% hit (Threshold: 3.0%). Market momentum slowing.",
confidence_score=0.92
)
Prompts are not permissions. Just as traditional apps rely on role-based access control, agents require a strict responsibility contract residing in the deterministic runtime. This layer acts as a firewall, validating every proposal against hard engineering rules: schema, parameters, and risk limits. Crucially, this check is deterministic code, not another LLM asking, “Is this dangerous?” Whether the agent hallucinates a capability or obeys a malicious prompt injection, the runtime simply enforces the contract and rejects the invalid request.
Real-world example: A trading agent misreads a
comma-separated value and attempts to execute
place_order(symbol='ETH-USD', quantity=15500). This
would be a catastrophic position sizing error. The contract rejects
it immediately:
ERROR: Policy rejected. Proposed order value exceeds hard limit.
Request: ~40000000 USD (15500 ETH)
Limit: 50000 USD (max_order_size_usd)
The agent’s output is discarded; the human is notified. No API call, no cascading market impact.
Here is the contract that prevented this:
# agent_contract.yaml
agent_id: "crypto_position_manager_01"
role: "EXECUTOR"
mission: "Manage news-triggered ETH positions. Protect capital while seeking alpha."
version: "1.2.0" # Immutable versioning for audit trails
owner: "jane.doe@example.com" # Human accountability
effective_from: "2026-02-01"
# Deterministic Boundaries (The 'Kernel Space' rules)
permissions:
allowed_instruments: ["ETH-USD", "BTC-USD"]
allowed_policy_types: ["TAKE_PROFIT", "CLOSE_POSITION", "REDUCE_SIZE", "HOLD"]
max_order_size_usd: 50000.00
# Safety & Economic Triggers (Intervention Logic)
safety_rules:
min_confidence_threshold: 0.85 # Don't act on low-certainty reasoning
max_drawdown_limit_pct: 4.0 # Hard stop-loss enforced by Runtime
wake_up_threshold_pnl_pct: 2.5 # Cost optimization: ignore noise
escalate_on_uncertainty: 0.70 # If confidence < 70%, ask human
This mechanism addresses the classic race condition where the world changes between the moment you check it and the moment you act on it. When an agent begins reasoning, the runtime binds its process to a specific context snapshot. Because LLM inference takes time, the world will likely change before the decision is ready. Right before executing the API call, the runtime performs a JIT verification, comparing the live environment against the original snapshot. If the environment has shifted beyond a predefined drift envelope, the runtime aborts the execution.
Figure 2: JIT verification catches stale decisions
before they reach external systems.
The drift envelope is configurable per context field, allowing fine-grained control over what constitutes an acceptable change:
# jit_verification.yaml
jit_verification:
enabled: true
# Maximum allowed drift per field before aborting execution
drift_envelope:
price_pct: 2.0 # Abort if price moved > 2%
volume_pct: 15.0 # Abort if volume changed > 15%
position_state: strict # Any change = abort
# Snapshot expiration
max_context_age_seconds: 30
# On drift detection
on_drift_exceeded:
action: "ABORT"
notify: ["ops-channel"]
retry_with_fresh_context: true
This mechanism is designed to mitigate execution chaos and infinite retry loops. Before making any external API call, the runtime hashes the deterministic decision parameters into a unique idempotency key. If a network connection drops or an agent gets confused and attempts to execute the exact same action multiple times, the runtime catches the duplicate key at the boundary.
The key is computed as:
IdempotencyKey = SHA256(DFID + StepID + CanonicalParams)
Where DFID is the Decision Flow ID,
StepID identifies the specific action within a
multistep workflow, and CanonicalParams is a sorted
representation of the action parameters.
Critically, the context hash (snapshot of the
world state) is deliberately excluded from this
key. If an agent decides to buy 10 ETH and the network fails, it
might retry 10 seconds later. By then, the market price (context)
has changed. If we included the context in the hash, the retry
would generate a new key (SHA256(Action +
NewContext)), bypassing the idempotency check and causing a
duplicate order. By locking the key to the Flow ID and
Intent params only, we ensure that a retry of the same
logical decision is recognized as a duplicate, even if the world
around it has shifted slightly.
Furthermore, when an agent makes a multistep decision, the runtime tracks each step. If one step fails, it knows how to perform a compensation transaction to roll back what was already done, instead of hoping the agent will figure it out on the fly.
A DIR does not magically provide strong consistency; it makes the consistency model explicit: where you require atomicity, where you rely on compensating transactions, and where eventual consistency is acceptable.
Distributed tracing is not a new idea. The practical gap in many agentic systems is that traces rarely capture the artifacts that matter at the execution boundary: the exact context snapshot, the contract/schema version, the validation outcome, the idempotency key, and the external receipt.
The Decision Flow ID (DFID) is intended as a reconstruction primitive—one correlation key that binds the minimum evidence needed to answer critical operational questions:
In practice, this turns a postmortem from “the agent traded” into “this exact intent was accepted under these deterministic gates against this exact snapshot, and produced this external receipt.” The goal is not to claim perfect correctness; it is to make side effects explainable at the level of inputs and gates, even when the reasoning remains probabilistic.
At the hierarchical level, DFIDs form parent-child relationships. A strategic intent spawns multiple child flows. When multistep workflows fail, you reconstruct not just the failing step but the parent mandate that authorized it.
Figure 3: Hierarchical Decision Flow IDs enable
full process reconstruction across multi-agent interactions.
In practice, this level of traceability is not about storing prompts—it is about storing structured decision telemetry.
In one trading simulation, each position generated a decision flow that could be queried like any other system artifact. This allowed inspection of the triggering news signal, the agent’s justification, intermediate decisions (such as stop adjustments), the final close action, and the resulting PnL, all tied to a single simulation ID. Instead of replaying conversational history, this approach reconstructed what happened at the level of state transitions and executable intents.
SELECT position_id
, instrument
, entry_price
, initial_exposure
, news_full_headline
, news_score
, news_justification
, decisions_timeline
, close_price
, close_reason
, pnl_percent
, pnl_usd
FROM position_audit_agg_v
WHERE simulation_id = 'sim_2026-02-24T11-20-18-516762+00-00_0dc07774';
Figure 4: Example of structured decision
telemetry. Each row links context, reasoning, intermediate actions,
and financial outcome for a single simulation run.
This approach is fundamentally different from prompt logging. The agent’s reasoning becomes one field among many—not the system of record. The system of record is the validated decision and its deterministic execution boundary.
The industry is shifting from model-centric AI, measuring success by reasoning quality alone, to execution-centric AI, where reliability and operational safety are first-class concerns.
This shift comes with trade-offs. Implementing deterministic control requires higher latency, reduced throughput, and stricter schema discipline. For simple summarization tasks, this overhead is unjustified. But for systems that move capital or control infrastructure, where a single failure outweighs any efficiency gain, these are acceptable costs. A duplicate $50K order is far more expensive than a 200 ms validation check.
This architecture is not a single software package. Much like how Model-View-Controller (MVC) is a pervasive pattern without being a single importable library, DIR is a set of engineering principles: separation of concerns, zero trust, and state determinism, applied to probabilistic agents. Treating agents as untrusted processes is not about limiting their intelligence; it is about providing the safety scaffolding required to use that intelligence in production.
As agents gain direct access to capital and infrastructure, a runtime layer will become as standard in the AI stack as a transaction manager is in banking. The question is not whether such a layer is necessary but how we choose to design it.
This article provides a high-level introduction to the Decision Intelligence Runtime and its approach to production resiliency and operational challenges. The full architectural specification, repository of context patterns, and reference implementations are available as an open source project at GitHub.
CodeSOD: Preformatted [The Daily WTF]
Amity sends us a "weird" replacement, and I regret to inform you, it's not as weird as it should be.
$body = str_replace(['<pre><code>', '</code></pre>'], ['<pre>', '</pre>'], $body);
This PHP code scans through a string containing HTML and
replaces all the
<pre><code>.../<code></pre>
tags with just <pre></pre>. And yes,
that's a weird thing to do; these mean different things, after all.
pre tells us the text is preformatted and things like
extra whitespace and line breaks should be respected.
code tells us the text represents some sort of code.
Usually, that involves respecting the formatting, but it also
generally involves rendering in a monospace font.
And this touches upon one of my complaints about this very site. A complaint I don't complain about much, because I could easily fix it, and also it doesn't bother me that much, but also, I don't want to be maintaining our little homegrown CMS more than I have to, so I haven't done it.
Quite some time ago, we did a redesign here. It was fairly
necessary, as the site old 100% didn't work on mobile devices. At
the time, one habit was en vogue amongst web developers:
clear all the formatting rules from the default browser stylesheet
and replace them with your own. I can sympathize with that, I
suppose. It's certainly one way to deal with cross browser
rendering quirks: burn everything to the ground and build up from
scratch. You'll still have cross browser quirks, but they'll all be
your fault, and your fault alone. And another "quirk" that showed
up in that rebuilding, and a quirk I've seen on a depressing number
of other sites: make pre content be in monospace.
For some reason I don't fully understand, there was a brief
period in CSS styling where people willfully collapsed the
distinction between pre and code, and
just turned them into the same thing. I'm admittedly a bit of a
semantic snob (HTML is a DATA format not a PRESENTATION format,
it's still SGML to me).
In any case, this doesn't impact you, our dear readers, who
instead get a sometimes confounding Markdown comment box with bad
editing support. But I post articles here in pure HTML, and while I
rarely need a pre tag, every once in awhile, the
default site stylesheet throws me off.
The PAX East Show Store Is Open! [Penny Arcade]
This year's theme park has so many twists and turns, so many nice little Touches, that it would be tricky to call each of them out. I merely saw how Gavin had done the S in "PAX East" on a jacket and had to sit down immediately. First I'll show off everything you can get on our Official PAX Shop, from the comfort of your own phone:
GE SmartHQ™ Management [Planet GNU]
https://www.smart ...
com/lp/management
This offering sure looks like GNU remotecontrol. Perhaps it is our
code.
As the US Midterms Approach, AI Is Going to Emerge as a Key Issue Concerning Voters [Schneier on Security]
In December, the Trump administration signed an executive order that neutered states’ ability to regulate AI by ordering his administration to both sue and withhold funds from states that try to do so. This action pointedly supported industry lobbyists keen to avoid any constraints and consequences on their deployment of AI, while undermining the efforts of consumers, advocates, and industry associations concerned about AI’s harms who have spent years pushing for state regulation.
Trump’s actions have clarified the ideological alignments around AI within America’s electoral factions. They set down lines on a new playing field for the midterm elections, prompting members of his party, the opposition, and all of us to consider where we stand in the debate over how and where to let AI transform our lives.
In a May 2025 survey of likely voters nationwide, more than 70% favored state and federal regulators having a hand in AI policy. A December 2025 poll by Navigator Research found similar results, with a massive net +48% favorability for more AI regulation. Yet despite the overwhelming preference of both voters and his party’s elected leaders—Congress was essentially unanimous in defeating a previous state AI regulation moratorium—Trump has delivered on a key priority of the industry. The order explicitly challenges the will of voters across blue and red states, from California to South Dakota, scrambling political positions around the technology and setting up a new ideological battleground in the upcoming race for Congress.
There are a number of ways that candidates and parties may try to capitalize on this emerging wedge issue before the midterms.
In 2025, much of the popular debate around AI was cast in terms of humans versus machines. Advances in AI and the companies it is associated with, it is said, come at the expense of humans. A new model release with greater capabilities for writing, teaching, or coding means more people in those disciplines losing their jobs.
This is a humanist debate. Making us talk to an AI customer-support agent is an affront to our dignity. Using AI to help generate media sacrifices authenticity. AI chatbots that persuade and manipulate assault our liberty. There is philosophical merit to these arguments, and yet they seem to have limited political salience.
Populism versus institutionalism is a better way to frame this debate in the context of US politics. The MAGA movement is widely understood to be a realignment of American party politics to ally the Republican party with populism, and the Democratic party with defenders of traditional institutions of American government and their democratic norms.
This frame is shattered by Trump’s AI order, which unabashedly serves economic elites at the expense of populist consumer protections. It is part of an ongoing courting process between MAGA and big tech, where the Trump political project sacrifices the interests of consumers and its populist credentials as it cozies up to tech moguls.
We are starting to see populist resistance to this government/big tech alignment emerge on the local scale. People in Maryland, Arizona, North Carolina, Michigan and many other states are vigorously opposing AI datacenters in their communities, based on environmental and energy-affordability impacts. These centers of opposition are politically diverse; both progressives and Trump-supporting voters are turning out in force, influencing their local elected officials to resist datacenter development.
This opposition to the physical infrastructure of corporate AI is so far staying local, but it may yet translate into a national and politically aligned movement that could divide the MAGA coalition.
Any policy discussions about AI should include the individual harms associated with job loss, as employers seek to replace laborers with machines. It should also include the systemic economic risks associated with concentrated and supercharged AI investment, the democratic risks associated with the increased power in monopolistic and politically influential tech companies, and the degradation of civic functions like journalism and education by AI. In order for our free market to function in the public interest, the companies amassing wealth and profiting from AI must be forced to take ownership of, and internalize, these costs.
The political salience of AI will grow to meet the staggering scale of financial investment and societal impact it is already commanding. There is an opportunity for enterprising candidates, of either political party, to take the mantle of opposing AI-linked harms in the midterm elections.
Political solutions start with organizing, and broadening the base of political engagement around these issues beyond the locally salient topic of datacenters. Movement leaders and elected officials in states that have taken action on AI regulation should mobilize around the blatant industry capture, wealth extraction, and corporate favoritism reflected in the Trump executive order. AI is no longer just a policy issue for governments to discuss: it is a political issue that voters must decide on and demand accountability on.
Grrl Power #1446 – Tropical storm Leander [Grrl Power]
Working out is hard when you can lift the entire gym.
The bottom-left panel is supposed to be a hypothetical Everglades post-maximum Maxima event. I assumed Willy Crocman would make that obvious-ish, but the background could also be interpreted as Monument Valley after being pounded to sand. There’s not a whole lot of crocodiles in Utah, though, generally speaking.
Maxima’s outfit has to basically be printed onto her skin, and while makeup and grease paint don’t stick to her, it’s not like nothing at all does. A wacky wall walker would probably stick to her well enough. Probably one of those rubber stickers that are used on windows. Those might use the same technology, come to think of it. Cora and Galen found some material that basically won’t come off her skin if she’s exerting even the smallest amount of “personal force field” to envelop the stuff, and embedded thousands of micro holo projectors in it. The projection overlaps, so she’ll still have coverage if she loses small patches during the fight, and if large enough bare patches cause her disguise to start to fail, the stuff will slither around and attempt to close the gaps, but that’s dangerous during a fight because it can’t migrate anywhere while her force field is holding it in place. The plan at that point is for her to shift “Armor” into “Speed,” and keep out of danger for the 10-15 seconds it would take her smart cat suit to rearrange itself.
It is conceivable then, that if enough of the outfit was damaged all at once, she could find herself on Space-TV in front of a trillion viewers wearing nothing but pasties. But that’s a risk any superhero or heroine takes when they get into high-powered fights in front of a bank, and they are tougher than their own clothes.
Ah! I thought I had more time till March. I’m bad
at looking at dates apparently.
Here is Gaxgy’s painting Maxima promised him. Weird how he draws almost exactly like me.
I did try and do an oil painting version of this, by actually re-painting over the whole thing with brush-strokey brushes, but what I figured out is that most brushy oil paintings are kind of low detail. Sure, a skilled painter like Bob Ross or whoever can dab a brush down a canvas and make a great looking tree or a shed with shingles, but in trying to preserve the detail of my picture (eyelashes, reflections, etc) was that I had to keep making the brush smaller and smaller, and the end result was that honestly, it didn’t really look all that oil-painted. I’ll post that version over at Patreon, just for fun, but I kind of quit on it after getting mostly done with re-painting Max.
Patreon has a no-dragon-bikini version of of the picture as well, naturally.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
The end of the content shortage [Seth's Blog]
You can be fashionable without reading Vogue. You can be informed without watching the nightly news. You can be smart about science without going to MIT. It’s possible to be a great chef without buying a cookbook. In fact, you can probably thrive without reading this blog. There are millions of songs on Spotify that have only been listened to a few times each.
Not only are more humans publishing more often on more topics, but we’ve built LLMs that are always ready to create even more content, on demand, for an audience of one.
For generations, content has created the demand for more content. A few movies increased our desire to watch more movies. AM radio created the demand for FM, which sold more records, and then Napster magnified our desire for even more music.
Until we hit the wall of enough.
The ennui of infinite content is reversing our spiraling desire for more of it.
Urgent: Speaking engagements, Europe [Richard Stallman's Political Notes]
I expect to have a trip to Europe in May - June. The start and end dates remain to be decided.
If you would like to invite me to speak during that trip, please write to me now so we can start discussing it. Write to `-invitation' following my three-letter username.
Kennedy Center closing down for two years [Richard Stallman's Political Notes]
The board of the Kennedy Center in Washington DC, newly altered by the saboteur in chief, voted to close down for two years of "renovations".
I can imagine what the building will look like after that remodeling: every 20 feet along any wall there will be a molding depicting his face. It will be necessary to spend more money to undo that.
Greatly reduced homicides in Oakland, CA [Richard Stallman's Political Notes]
How Oakland, California, greatly reduced homicides.
"Emergency Order" to restart leaky oil pipeline [Richard Stallman's Political Notes]
California law shut down a leaky, polluting pipeline under the Pacific Ocean from Santa Barbara, after it spilled a lot of oil on a beach. so the oil spiller in chief gave the pipeline's owner, as a favor, an "emergency order" to restart it immediately.
California and the federal government continue legal action over whether the pipeline will be allowed to operate. What is clear is that having one more oil pipeline operating is not overall a benefit for the world.
Democratic candidates backed by AIPAC [Richard Stallman's Political Notes]
Democratic candidates that are backed by AIPAC are now reluctant to admit that.
Google dis-service offering online medical advice deactivated [Richard Stallman's Political Notes]
Google has deactivated an online dis-service that until recently offered medical advice based on applying Pretend Intelligence to what users with no medical training said.
This may have been the wise course, since Pretend Intelligence does not actually understand the text it inputs or outputs.
Criticism of streaming platforms in mainstream press [Richard Stallman's Political Notes]
In the mainstream press, even criticism of streaming platforms takes for granted that they are entitled to the power to control what you can do with a recording, and thus reinforces that assumption. Here's an example.
Once you recognize that that power is based on Digital Restrictions Management, which means using nonfree software to control what users can and can't do, you can resist that implicit argument in favor of subjugating you.
Many infants start practicing deception before they can talk [Richard Stallman's Political Notes]
Many infants start practicing deception before they can talk, at an age of less than one year.
Eight protesters in Texas convicted [Richard Stallman's Political Notes]
Eight protesters in Texas, allegedly supporting of the alleged organization "Antifa", were convicted of "material support for terrorism". In their trial, prosecutors cited the fact that some of them wore black clothing, used Signal, and/or carried guns.
Right-wingers also carry guns at protest, and use Signal, but somehow do not get prosecuted for that.
US Department of Health ignored administration of Title X [Richard Stallman's Political Notes]
The US Department of Health quietly ignored the administration of Title X, which provides birth control and sex-specific medical treatment for females, and the system may soon collapse.
I have a suspicion that this mysterious failure was engineered by right-wing extremist Christians who seek to force females to have babies.
Wrecker's new nominee to head of Department of Hatred and Sadism [Richard Stallman's Political Notes]
The wrecker's new nominee to head the Department of Hatred and Sadism has a pattern of speaking so as to give the false impression that he has military experience.
This deception marks him as untrustworthy, but if he were honest about his lack of military experience, that might not be crucial. The DHS does not manage soldiers, after all.
I expect that anyone nominated by the wrecker would regard it as per mission to be cruel and sadistic, and thus should not be confirmed, but that is a separate issue.
Burning Tesla "cybertrucks" locked passengers inside [Richard Stallman's Political Notes]
Tesla "cybertrucks" have locked passengers inside and burned so hot they've disintegrated drivers' bones.
States should designate vehicles which can lock passengers in as unsafe and illegal to drive on a road.
Populations of insect-eating birds in EU [Richard Stallman's Political Notes]
Just 8 years after the EU banned neonicotinoid pesticides, the populations of insect-eating birds are starting to recover.
Because these pesticides are persistent, full recovery will take a long time. I hope other human-caused effects, such as global heating, will not swamp it.
British "Reform" party trying to bribe voters [Richard Stallman's Political Notes]
The British right-wing extremist "Reform" Party is trying to bribe voters by entering them in a lottery, where winning may depend on which party you voted for, and stating which one you will vote for next time.
Zelenskyy offers Europe help in countering drone attacks [Richard Stallman's Political Notes]
Zelenskyy offers Europe Ukraine's help in countering drone attacks, whether from Russia, from Iran, or from criminal gangs.
Urgent: Energy market [Richard Stallman's Political Notes]
US citizens: call on Congress to investigate energy market manipulation.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
A Quick Check-In From Mexico [Whatever]

Oh, hello. The JoCo Cruise is in full swing now and last night we had the “land concert” in Loreto, Mexico, and while there (and in between snapping pictures of the performers), I got this photo of Krissy. She was having a good time.
And so am I! Fabulous cruise with fabulous people and it’s humming along nicely. I’ll post about it more when I’m back on land, I’m sure. In the meantime, I hope you’re all well.
— JS
[1295] The Masks Are Still Watching [Twokinds]
Comic for March 25, 2026
[$] LWN.net Weekly Edition for March 26, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
so, i am having a little bit of a stand by me moment [WIL WHEATON dot NET]
There’s a lot happening in my world right now, joy and sorrow, and I don’t have the spoons to write about it. But I’m having a Stand By Me moment that I wanted to share before it passes.
Yesterday, my narration of The Body by Stephen King (the novella that was adapted into Stand By Me) was released. I have wanted to do this for years, and I can’t believe I never wrote about it here. I’ll address that in the future, because it’s a cool story. Simon and Schuster, the publisher, has been super supportive and enthusiastic about this release. They gave me a whole chapter to share, and it’s at the end of this week’s1 It’s Storytime With Wil Wheaton, available now wherever you get your podcasts.
Today, I am the subject of a truly wonderful column in the New York Times that includes interactive clips from my narration, scenes from Stand By Me, and the text of the novella. It’s a beautiful piece that genuinely surprised and delighted me. And it comes just a few days after we were the subject of this incredible essay, also in the New York Times, about our Stand By Me Live tour2.
Tonight, Jerry and Corey and I are together on Entertainment Tonight3 to talk about the movie’s theatrical re-release, which starts on Friday.
I’m glad you’re here. If you’d like to get my posts delivered to your inbox, here’s the thingy:
︎
︎
︎Drag Race Episode 12: Making Drag Sisters Outta Queer Cowboys [The Stranger]
It’s time for another classic Drag Race challenge: makeovers! This week, our remaining queens were tasked with turning six queer cowboys into their drag sisters. by Mike Kohfeld
It’s time for another classic Drag Race challenge: makeovers! This week, our remaining queens were tasked with turning six queer cowboys into their drag sisters.
But first, a Mini-Challenge. Dressed like he just stepped off of his Wyoming fracking ranch, RuPaul instructed the queens to “giddy-up and titty-up” for a Hot to Trot Horse Race. Seeing the queens in their quick-drag cowgirl looks made me cackle. “We are all looking like the nastiest county fair you have ever seen,” Darlene said, “and I feel right at home.”
The queens raced their way across the werkroom on inflatable horses. This was all shot in slow motion (of course) so we got to see every bounce, jiggle, and wipeout in delectable detail. In the end, Discord found herself with her second Mini-Challenge win: “In Discord math, two Minis make a Maxi.” I guess that works?
A Posse of Queer Cowboys
“Discord math” may be delusional, but she earned the privilege of pairing the queens with six strapping queer cowboys to kick off the Main Challenge.
Discord chose horse speed-rider Colton of Oklahoma for their uncanny resemblance (and matching ear gauges). She chose to do a Clueless theme for their runway, dressing as a punk mean girl while Colton, renamed Harmony Addams (get it?), was transformed into a preppy mean girl.
In the werkroom, RuPaul cautioned Discord to focus more on family resemblance rather than a cute concept, but Discord plowed ahead with her plan. It was a fun runway, but the judges didn’t buy it. Law Roach had nothing nice to say (Discord blasted his “nasty” judging style in an interview with EW) and Michelle insisted there was no family resemblance. Discord landed in the bottom two.
Juicy was paired with Greg, a Navajo gay rodeo All-Around champion. He became Loosey Love Dion—an exquisite incarnation of Celia Cruz—fulfilling Juicy’s vision of glamorous Afro-Latina twins. The judges praised the cohesion between the two looks. “Juicy turned me into this beautiful woman,” Loosey shared during the critiques, tearing up. “It’s so empowering.”
Discord partnered Jane Don’t with Terry, a retired rodeo judge from Oklahoma. Jane figured Discord gave her the eldest cowboy to trip her up. But she was undaunted, transforming Terry into her sister Maybe Don’t, dripping with vintage glamour in complementary gowns and feather boas.
The judges were split on Jane and Maybe. Guest judge actress/comedienne Danielle Pinnock exclaimed, “what episode of Parent Trap is this? Y’all are giving twins!” But Michelle insisted there was no family resemblance at all, landing Jane in her first-ever bottom placement. (The inconsistency of the judging during this episode was definitely the story editing taking a front seat as the producers build up the top four. In the words of Alyssa Edwards: rigga morris!)
View this post on Instagram
Regardless of the judging, Terry/Maybe Don’t had the time of his life: “Looking this glamorous, I never dreamed I would look as good, or better than you, RuPaul.” At the end of the episode, there was a memoriam for Terry. Jane shared a touching statement on her Instagram. Pour one out for Terry.
Drag Family Therapy
Michael of Denver, the VP of the International Gay Rodeo Association, became Morgan Meeks under partner Myki’s tutelage. Myki ended up with an unexpected advantage, as Michael had snatched the title of Miss International Gay Rodeo in 2000. He shared that he had quit drag because of hangups around his masculinity, but the experience with Drag Race helped him reconnect with his feminine side.
The Meeks sisters fit the brief in matching gowns. While the looks were relatively simple compared to the other queens’, they looked related to one another… and related to Michelle, too: Roach called them “Nichelle and Rochelle Visage.” Myki scored the win for the episode.
Myki wasn’t the only one to get a queeny cowboy. Darlene’s partner Chris, a roper from Oklahoma, was unafraid of his feminine side. During RuPaul’s walkthrough, Chris shared that he cleaned house in stilettos (something tells me Darlene does this too. Banana!). It was a match made in gay heaven. Darlene leaned into the camp of it all, turning Chris into her trashy sister Bonnie Mitchell on a wild night out in Vegas.
Nini was paired with Jason, a Colorado steer wrestler. Jason’s story of being afraid of his own femininity after the murder his friend and fellow soldier Barry Winchell inspired Nini to help him reconnect with his queerness through drag. For their runway, Nini chose a conceptual route, dressing herself as a monarch butterfly and Jason (as Patsy Coco) as a caterpillar. “I thought the costumes were cute, but there was no family resemblance at all,” Law Roach said to the agreement of the rest of the judges.
Nini ended up in the bottom two alongside Discord—the first time for them both. They battled it out to Ariana Grande’s ballad, “we can’t be friends.” Nini had a tighter lipsync and better matched the energy of the song, keeping her in the competition.
We hated to see Discord go, but we loved to watch her Discord-walk away. After promising to see us again on All Stars (yes please), she departed Season 18 with a hearty “eat the rich, fuck the patriarchy.” This is now a Discord Addams stan account.
Of the five queens left, who will make it to the Top Four? It’ll all come down to next week’s performance challenge: Karens Gone Wild. See you then!
The reports of age verification in Linux are greatly exaggerated, for now [OSnews]
Several US states, the country of Brazil, and I’m sure other places in the world have enacted or are planning to enact laws that would place the burden of age verification of users on the shoulders of operating system makers. The legal landscape is quite fragmented at this point, and there’s no way to tell which way these laws will go, with tons of uncertainties around to whom these laws would apply, if it targets accounts for application store access or the operating system as a whole, what constitutes an operating system in the first place, and many more. Still, these laws are already forcing major players like Apple to implement sharing self-reported age brackets with application developers (at least in iOS), so there’s definitely something happening here.
In recent weeks, the open source world has also been confronted
with the first consequences of these laws, as both systemd and
xdg-desktop-portal have responded to operating system-level age
verification laws in, among other places, California and Colorado,
by adding
birthDate to userdb (on systemd’s side) and
developing
an age verification portal (on xdg-desktop-portal’s side)
for use by Flatpaks. The age verification portal would then use the
value set in usrdb’s birthDate as its data
source. The value in birthDate would only be
modifiable by an administrator, but can be read by users,
applications, and so on.
Crucially, this field is entirely optional, and distributions, desktop environments, and users are under zero obligation to use it or to enter a truthful value. In fact, contrary to countless news items and comments about these additions, nothing about this even remotely constitutes as “age verification”, as nothing – not the government, not the distribution or desktop environments, not the user – has to or even can verify anything. If these changes make it to your distribution, you don’t have to suddenly show your government ID, scan your face, or link your computer to some government-run verification service, or even enter anything anywhere in the first place.
Furthermore, while the xdg-desktop-portal’s proposals are
still fluid and subject to change, consensus seems to be to only
share age brackets with applications, instead of full birth dates
or specific ages – assuming anything has even been entered in
the birthDate field in the first place. Even if your
Linux distribution and/or desktop environment implements everything
needed to support these changes and expose them to you in a nice
user interface, everything about it is optional and under your full
control. The field is of the same type as the existing fields
emailAddress, realName, and
location, which are similarly entirely optional and
can be left empty if desired.
Taken in isolation, then, as it currently stands, there’s really not much meat to these changes at all. The primary reason to implement these changes is to minimally comply with the new laws in California, Colorado, Brazil, and other places, and it’s understandable why the people involved would want to do so. If they do not, they could face lawsuits, fines, or worse, and I don’t know about you, but I wouldn’t want to be on the receiving end of the western world’s most incompetent justice system. Aside from that, these changes make it possible to build robust parental controls, which isn’t mentioned in the original commits to systemd, but is clearly the main focal point of xdg-desktop-portal’s proposal.
This all seems well and good, but given today’s political climate in the United States, as well as the course of history, that “as it currently stands” is doing a lot of heavy lifting. Rightfully so, a lot of people are worried about where this could lead. Sure, today these are just inconsequential, optional changes in response to what seems to be misguided legislation, but what happens once these laws are tightened, become more demanding, and start requiring a lot more than just a self-reported age bracket?
In Texas, for instance, H.B. 1131 requires any commercial entity, including websites, that contains more than one-third “sexual material harmful to minors” to implement age verification tools using things like government-issued IDs or bank transaction data to verify visitors’ ages before allowing them in. The UK has a similar law on the books, too. It’s not difficult to imagine how some other law will eventually shift this much stricter, actual age verification from websites and applications into operating systems instead. What will systemd’s and xdg-desktop-portal’s developers do, then? Will they comply as readily then as they do now?
This is a genuine worry, especially if you already belong to a group targeted by the current US administration, or were face-scanned by ICE at a protest. Large groups of especially religious extremists consider anything that’s LGBTQ+ to be “sexual material harmful to minors”, even if it’s just something normal like a gay character in a TV show. It’s not hard to imagine how age verification laws, especially if they force age verification at the operating system level, can become weaponised to target the LGBTQ+ community, other minorities, and people protesting the Trump regime.
You may think this won’t affect you, since you’re using an open source operating system like desktop Linux or one of the BSDs, and surely they are principled enough to ignore such dangerous laws and simply not comply at all, right? Sadly, here’s where the idealism and principles of the open source world are going to meet the harsh boot of reality; while open source software has a picturesque image of talented youngsters hacking away in their bedrooms, the reality is that most of the popular open source operating systems are actually hugely complex operations that require a ton of funding, and that funding is often managed by foundations. And guess where most popular Linux distributions’ and BSD variants’ foundations are located?
Developers from all over the world may contribute to Debian, but all of its financials and trademarks are managed by Software in the Public Interest, domiciled in New York State. Fedora is part of Red Hat, owned by IBM, and we all know IBM. Arch Linux’ donations are also managed by Software in the Public Interest. The Gentoo Foundation is domiciled in New Mexico. The FreeBSD Foundation is domiciled in Boulder, Colorado. The NetBSD Foundation is domiciled in Delaware. Ubuntu is a Canonical product, a company headquartered in London, UK, a country with strict age verification laws for websites and applications. Hell, even Haiku, Inc. is domiciled in New York State. I could go on, but you get the gist: all of these projects manage their donations, financials, trademarks, and related issues in the United States (or the UK for Ubuntu).
It’s relatively easy for these projects to take a principled stance against the relatively limited age verification laws that exist today, but what about if and when these laws are expanded to infiltrate the very operating systems we use? It’s easy to resist the boot when it’s pressing down on some porn website or a sex worker’s OnlyFans page, but once that same boot is pressing down on your own throat? That’s a whole different story. Will Debian, FreeBSD, or Fedora still stand their ground when the organisations managing their donations, finances, and trademarks become the target of lawsuits or the US justice system, because they refuse to implement age verification?
I sincerely doubt it.
And this is why I am of two minds about this issue. On the one hand, I fully understand that the various developers involved with these efforts want to make sure they follow the law and avoid getting fined – or worse – especially since compliance requires so little at this time. On top of that, these changes make it possible to implement a fairly robust set of parental controls in a centralised way, keeping the data involved where it makes sense, so it also brings a number of benefits for users. There really isn’t anything to worry about when looking at these changes in isolation.
On the other hand, though, I also understand the fears and worries from people who see these changes as the first capitulation to age verification, nicely making the bed for much stricter age verification laws I’m sure certain parts of the political compass are already dreaming about. With so many Linux distributions, BSD variants, and even alternative operating systems having their legal domiciles in the United States, it’s not unreasonable to assume they’re going to fold under any possible legal pressure that comes with such laws.
I’m not rushing to replace my Fedora KDE installations with something else at this point, but I’m definitely going to explore my options on at least one of my machines and go from there, so I at least won’t be caught with my pants down in the future. The world isn’t ending, age verification hasn’t come to Linux, but we’d all do well to remain skeptical and prepare for when it does make its way into our open source operating systems.
EFF Sues for Answers About Medicare's AI Experiment [Deeplinks]
SAN FRANCISCO – The Electronic Frontier Foundation (EFF) today filed a Freedom of Information Act (FOIA) lawsuit against the Centers for Medicare & Medicaid Services (CMS) seeking records about a multi-state program that is using AI to evaluate requests for medical care.
"Tasking an algorithm with making determinations about treatment can create unwarranted—and even discriminatory—delays or denials of necessary medical care," said Kit Walsh, EFF’s Director of AI and Access-to-Knowledge Legal Projects. "Given these serious risks, the public requires transparency that it hasn't gotten. We're suing to get badly needed answers about how Medicare's AI experiment works."
Announced by CMS Administrator Dr. Mehmet Oz last year, the pilot program known as WISeR (Wasteful and Inappropriate Service Reduction) uses AI to assess prior authorization requests from Medicare beneficiaries. Previously rare in original Medicare, prior authorization requires medical providers to obtain advance approval from a patient’s health insurer before delivering certain treatments or services as a condition of coverage.
Unfortunately, there is little information about how the AI algorithms used in WISeR work, including what training data they rely on. It remains unclear whether WISeR has any safeguards against systemic flaws such as algorithmic bias, privacy violations, and wrongful denials of care.
Healthcare experts, care providers, and lawmakers have all raised alarms that WISeR may cause serious harm to patients by relying on AI unless it has the necessary safeguards. Despite this widespread criticism, WISeR was rolled out in six states in January, potentially affecting as many as 6.4 million Medicare beneficiaries, according to one estimate.
By design, WISeR incentivizes contracted companies to deny prior approval against the best interests of patients. Vendors are compensated, in part, on the volume of healthcare services they deny and are entitled to as much as 20 percent of the associated savings. Just weeks after WISeR's launch, hospitals and other health care providers started reporting delays in care approval, communication gaps, and administrative strain.
Earlier this year, EFF submitted a FOIA request to CMS asking for records related to WISeR. Among other records, the request sought agreements with software vendors participating in WISeR; records related to any tests for accuracy, bias, or hallucinations in vendors' technology; and records related to any audits, monitoring, or evaluation of WISeR and participating vendors. To date, CMS has not provided any of these records to EFF. EFF's FOIA lawsuit asks for their immediate processing and release.
"The public has a right to know more about the algorithms driving decisions around their healthcare," said Tori Noble, Staff Attorney at EFF. "Without greater transparency, patients, providers, and policymakers will continue to be left in the dark.”
EFF thanks Stanford Law School's Juelsgaard
Intellectual Property & Innovation Clinic for their help in
preparing this lawsuit.
For the complaint:
https://www.eff.org/document/complaint-eff-v-cms-medicare-wiser-foia
[$] Collaboration for battling security incidents [LWN.net]
The keynote for Sun Security Con 2026 (SunSecCon) was given by Farzan Karimi on how incident handling can go awry because of a lack of collaboration between the "good guys"—which stands in contrast to how attackers collaboratively operate. He provided some "war stories" where security incident handling had benefited from collaboration and others where it was hampered by its lack. SunSecCon was held in conjunction with SCALE 23x in Pasadena in early March.
Slog AM: Cesar Chavez Park to Be Renamed, the Muckleshoot Casino Sauce Machine, and Wishing Death on Your Enemies in a Christ-Like Manner [The Stranger]
The Stranger's morning news roundup. by Vivian McCall
Seattle, King County to rename Cesar Chavez Park in South Park: Since the former Mexican American labor hero allegedly sexually abused girls and women, including his fellow labor leader Dolores Huerta, this is a good idea. The sign with Chavez’s name has already come down, The Seattle Times reports.
Leaders are grappling with the Chavez allegations in the Yakima valley, where he visited many times, reports the Yakima Herald. In 1986, he spoke at Yakima Valley College and Central Washington University before a two day march focused on the plight of asparagus cutters.
ICE in the News: The King County Council voted Tuesday to ban immigration operations on certain county properties unless federal agents have a judicial warrant or court order, KUOW reports. The measure passed 7-1. Councilmember Reagan Dunn voted against. His brother in moderation Councilmember Pete Von Reichbauer was excused from the vote. The council also struck the word “alien” from its legal code. County Executive Girmay Zahilay issued an executive order directing the council to take up the legislation.
What’s more Christ-like than wishing death on your enemies? Defense Secretary Pete Hegseth’s pastor and closest spiritual advisor Brooks Potteiger said on the podcast “Reformation Red Pill” that he wants Texas Senate candidate James Talarico to die. He referred to Talarico as a “wolf,” “demon,” and a “snake.” Actually, he’s a white Christian man! No matter. “First and foremost, we pray that a man like this would be cut to the heart.”
I’d hate to be slop rn. OpenAI is shutting down it’s AI video app Sora just a few months after launch and a now-kaput $1 billion investment deal with Disney. Back in October, Sora was hailed as this next-gen product of “the threat to our shared reality” variety. But Sora hemorrhaged money. Back of the napkin math suggested the company was blowing $15 million a day on these videos, Forbes wrote in November. Even the head of Sora, Bill Peebles, said the economics were completely unsustainable. Does this mean Mickey Mouse is staying far, far away from the slop? No, they’re still going to engage with AI “to find new ways to meet fans where they are.”
Liable: After a seven-week trial, a New Mexico jury determined that Meta, which owns Facebook and Instagram and the soon-to-be-shuttered Metaverse, had harmed the mental health of children and concealed what it knew about child sexual exploitation on its social media platforms. Jurors are deliberating in a similar case in California. For its thousands of violations, Meta could pay out $375 million—less than a fifth of what prosecutors were seeking. The company is valued at $1.5 trillion, so it’s not likely to make a dent. The shareholders don’t care. Stock was up 5 percent following the verdict. As for what will change, a judge will decide.
Epic, Fail: Fortnite developer Epic Games laid off 1,000 employees on Wednesday, a significant chunk of its staff. In an open letter, CEO Tim Sweeney wrote that Fortnite engagement took a dive in 2025, and the company is now “spending significantly more than we’re making.” Sweeney did not share exact engagement numbers. But at its 2023 peak Fortnite averaged 3.1 million players a day. Last September, that number had fallen to approximately 835,000. This is nothing to floss about.
😐👍: The Pentagon will order 2,000-3,000 82nd Airborne soldiers to the Middle East to support the war in Iran. Simultaneously, the US has sent Iran a 15-point plan to end the same war. It hasn’t been made public. This morning, Iran rejected the proposal and laid out its own conditions.
Go To War, Elder Millennials: The army bumped up the max enlistment age to 42 this month, bringing the admission policy in line with most other US Military services like the Air Force, Space Force, and Coast Guard. Sure, you were never able to afford the house you always dreamed of, but Trump, in his infinite wisdom, has forged a new path for you.
Weather: Rain before 2 p.m., then a chance of thunderstorms. This will help you acclimate to the loud noises.
What Could Be Worse Than Skeletons in the Closet? While cleaning out a closet in preparation to move the Mississippi Department of Public Safety to new headquarters, workers discovered a small blue suitcase. Inside was a cache of Klu Klux Klan materials, including Klan charters, Klan robes, recruitment materials, meeting notes, and a ledger of members who paid—and didn’t pay—their dues. The department has donated the materials to the Mississippi Department of Archives and History.
“It’s more than a sauce station”: Muckleshoot Casino has a Heinz REMIX machine, a “game-changing flavor experience” that allows people to make fucked-up sauces. Tongue explorers can add up to two “flavor enhancers”— jalapeño, chipotle, buffalo, garlic, honey, or bacon—at three levels of intensity to bases of ketchup, mustard, mayonnaise, barbecue, ranch, smoked barbeque, and honey mustard. Sounds unclean.
👓 Who's Really Watching What Smartglasses See? | EFFector 38.6 [Deeplinks]
After years of tech industry experiments, smartglasses with embedded cameras and microphones have finally gone mainstream. And, disturbingly, sometimes it's not just their owners who are watching what these devices record. In this week's EFFector newsletter, we're taking a closer look at the privacy implications of Meta Ray-Bans, and sharing all the latest in the fight for privacy and free speech online.
For over 35 years, EFFector has been your guide to understanding the intersection of technology, civil liberties, and the law. This week's issue covers EFF's new executive director; how publishers blocking the Internet Archive threaten the web's historical record; and why you should think twice before buying or using Meta’s Ray-Bans.
Prefer to listen in? EFFector is now available on all major podcast platforms. This week, we're chatting with EFF Security and Privacy Activist Thorin Klosowski about smartglasses and privacy. And don't miss the EFFector news quiz. You can find the episode and subscribe on your podcast platform of choice:
Want to stay in the fight for privacy and free speech online? Sign up for EFF's EFFector newsletter for updates, ways to take action, and new merch drops. You can also fuel the fight against online surveillance when you support EFF today!
Here We Go Again [Penny Arcade]
Ronia is, in fact, on stage jumping around going fucking crazy in Mamma Mia, which is essentially like a jazzercize class with a lyric book. Like, on some Tae Bo shit. I would last part of one song before my lungs tried to crawl out of my mouth. Gabriel was under some misconceptions regarding the production that I was happy to correct by striking him repeatedly with one of those little ice fishing bats. Did you know that those little clubs are called "priests"? Gabriel didn't know either. I made sure he understood as it was coming down.
Setting up a Tor Relay at National Taiwan Normal University (Tor Blog) [LWN.net]
The Tor Blog has an interesting article about the non-technical side of setting up a Tor Relay. It documents how a computer science student at National Taiwan Normal University worked with the university system to set up a relay and provides a template for future attempts:
In Taiwan, anonymous networks do not lack technical documentation or ideological support. The real scarcity is experience from actually working through the real institutional system once. Especially in an environment where academic networks are highly centralized and outbound connectivity is tightly controlled, distributed anonymous infrastructure like Tor Relays is inherently difficult to sustain.
This implementation at National Taiwan Normal University was not meant to provide a final answer for anonymous networks. It was a concrete attempt made within real-world institutions. It may not immediately improve the performance or security of anonymous networks, and it was not intended to become a directly reproducible standard process. What it did achieve was leaving behind a clearly visible path of practice—one that can be understood, referenced, and built upon.
LibreQoS v2.0 released [LWN.net]
Version 2.0 of the LibreQoS traffic-management and network operations platform has been released.
This release makes LibreQoS easier to operate, easier to understand, and much more useful for day-to-day network work. Now users can see more of what is happening across the network, troubleshoot subscriber issues with better tools, and work from a much stronger local WebUI.
This release includes many capabilities that reflect ideas and direction long championed by our late colleague, Dave Täht.
Dave's work helped shape the understanding of bufferbloat and the importance of latency under load across the networking community. His influence continues to guide both LibreQoS and the broader effort to improve Internet quality.
The project has also announced
the release of the LibreQoS Bufferbloat Test
v2, also dedicated to Täht. It runs in a user's browser to
look at "latency under load, jitter, loss, and what those things
mean for the kinds of traffic people actually care about: browsing,
streaming, video calls, audio calls, backups, and gaming
".
[$] More efficient removal of pages from the direct map [LWN.net]
The kernel's direct map provides code running in kernel mode with direct access to all physical memory installed in the system — on 64-bit systems, at least. It obviously makes life easier for kernel developers, but the direct map also brings some problems of its own, most of which are security-related. Interest in removing at least some pages from the direct map has been simmering for years; a couple of patch sets under discussion show some use cases for memory that has been removed from the direct map, and how such memory might be efficiently managed.
How can I change a dialog box’s message loop to do a MsgWaitForMultipleObjects instead of GetMessage? [The Old New Thing]
A customer wanted to know how to change a dialog box’s
message loop so that it used
MsgWaitForMultipleObjects
instead of GetMessage. (I’m guessing that
they had a handle that they wanted to wait on while the dialog was
up.) The standard dialog box message loop checks only for messages,
not kernel handles.
One way to do it is to replace the modal dialog box with a
modeless one and run your own
message loop. However, there’s a key piece missing from
the do-it-yourself, which is that there is no way to know whether
the dialog procedure has called EndDialog, and
if so, what result code it passed.
So maybe you’re displaying somebody else’s dialog box and therefore cannot alter the dialog procedure to set a different flag when it wants to end the dialog. What can you do to customize the dialog loop from the outside?
Dialog boxes send their owner the
WM_ENTERIDLE message when they have run out of
work to do and are about to block waiting for a message. if the
handler of the WM_ENTERIDLE message returns, and
there is no posted message in the queue, then the dialog box goes
to sleep and waits for a message to come in.
As the name of the message suggests, one way to use the
WM_ENTERIDLE message is to handle the message by
doing do background idle-time activity, and then return when there
is a message for the dialog box to process. For example, maybe you
want to do spell checking when the user is idle.
Another way to use the WM_ENTERIDLE message
is to take over how the dialog message loop waits for a message.
You can do your own thing, and return when there is a posted
message that needs processing.
So let’s try it. Just for demonstration purposes, we’ll create a waitable timer that beeps every two seconds while a common file open dialog is up.
Start with our scratch program and make these changes. Remember that error checking has been elided for expository purposes.
#include <commdlg.h>
HANDLE hTimer;
void OnChar(HWND hwnd, TCHAR ch, int cRepeat)
{
if (ch != ' ') return;
hTimer = CreateWaitableTimerW(nullptr, FALSE, nullptr);
LARGE_INTEGER twoSeconds;
twoSeconds.QuadPart = -2 * wil::filetime_duration::one_second;
SetWaitableTimer(h, &twoSeconds, 2000, nullptr, nullptr, FALSE);
TCHAR buffer[MAX_PATH]{};
OPENFILENAME ofn{};
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = TEXT("All Files\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrFile = buffer;
ofn.nMaxFile = ARRAYSIZE(buffer);
GetOpenFileName(&ofn);
CloseHandle(hTimer);
hTimer = nullptr;
}
Our WM_CHAR handler ignores all characters other
than the space bar. But if you press the space bar, it creates a
waitable timer that triggers every two seconds, and then it
displays a dialog: In this case, it’s the common file open
dialog. When the dialog is finished, we close the timer since we
don’t need it any more. This is just setting up the
environment for our WM_ENTERIDLE handler to do
its magic.
The interesting work happens in the next function.
void OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource)
{
if (!hTimer) return;
MSG msg;
while (true) {
DWORD result = MsgWaitForMultipleObjects(1, &hTimer,
FALSE, INFINITE, QS_ALLINPUT);
switch (result) {
case WAIT_OBJECT_0:
MessageBeep(~0);
break;
case WAIT_OBJECT_0 + 1:
if (PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE)) {
return;
}
break;
default:
FAIL_FAST_HR(E_UNEXPECTED);
}
}
}
When we get a WM_ENTERIDLE message and there
is no timer handle, then just return without doing anything,
allowing the dialog box message loop to go idle.
But if we have a timer handle, then we use the
MsgWaitForMultipleObcjets
function to wait for either the timer handle to be signaled or for
a message to arrive. If it was the timer handle, we beep. If it was
a message, we call PeekMessage to process any
inbound SendMessage calls and see if
there’s a posted message waiting. if so, then we leave it in
the message queue (PM_NOREMOVE) for the dialog
loop to pick up and return. If we get any other code, then
something went horrible wrong, and we fail fast.
Now we can hook these up to our window procedure.
HANDLE_MSG(hwnd, WM_CHAR, OnChar);
HANDLE_MSG(hwnd, WM_ENTERIDLE, OnEnterIdle);
When the common dialog box goes idle, the internal dialog
message pump sends a WM_ENTERIDLE message to the
owner (which is us), and we do our handle stuff until a posted
message is ready.
When you run this program, press the space bar, and you get a happy common dialog box, accompanied by some annoying beeping.
I pulled a trick here. Maybe you noticed it. We’ll look at it next time.
The post How can I change a dialog box’s message loop to do a <CODE>MsgWaitForMultipleObjects</CODE> instead of <CODE>GetMessage</CODE>? appeared first on The Old New Thing.
Security updates for Wednesday [LWN.net]
Security updates have been issued by Debian (chromium), Fedora (chromium, containernetworking-plugins, musescore, and python-multipart), Mageia (perl-XML-Parser, roundcubemail, trilead-ssh2, vim, and webkit2), Oracle (389-ds:1.4, gimp:2.8, glibc, gnutls, kernel, libarchive, nginx:1.24, opencryptoki, python3, uek-kernel, vim, yggdrasil, and yggdrasil-worker-package-manager), Red Hat (delve, osbuild-composer, and skopeo), Slackware (mozilla), SUSE (dpkg, go1.26-openssl, gstreamer-plugins-ugly, kernel, libssh, ovmf, python-pyasn1, python-tornado6, python311, salt, sqlite3, and systemd), and Ubuntu (linux-aws-fips, linux-azure, linux-azure-fips, linux-fips, linux-gcp-fips, linux-iot, linux-kvm, pjproject, and redis).
WordPress can now connect via MCP for both reading and writing. This sounds like a possible alternative for the wpcom api that we're building on in WordLand. Sometimes it feels like everything is being reinvented. If the world would just stand still for a moment we might be able to do some building. I wonder how the advent of AI is affecting how WordPress is being developed. I know it's changing everything here.
Meanwhile I have to tend to the past. I had a server go down the other day, and haven't been able to get it running again. It's a very old one, the first I used PagePark for hosting the apps. So I'd rather not have to dig into whatever it is that's keeping it from running. This morning I moved the test app for XML-RPC, betty.userland.com, to another server, so this page now works again.
Tatterdemalion [Original Fiction Archives - Reactor]
Illustrated by Raven Jiang
Edited by Ann VanderMeer
Published on March 25, 2026

In a traditional folktale from Alak, a dreamy good-for-nothing young woman seeking excitement discovers a life of adventures may not be what she expected. Be careful what you wish for!
Novelette | 7,515 words
Introductory Note: The Deed mentioned in this story belongs to a class of magical artifacts that we find occasionally in Alak folklore and mythology. The original and most powerful of them was the Deed of Talorow, which, according to legend, was accidentally dropped by a sort of monster or demon hastily fleeing from the wrath of the gods. It was subsequently discovered by a little girl, who felt a very Alak-like disgust at the wildness and chaos of the world in her day, and who realized that the magic of the Deed would fix in their forms and roles everything that came within sight of it. The girl imagined how much more orderly and regular the world would be if only the Deed could be displayed in a sufficiently prominent place, where it could be seen by everyone, and therefore affect everything. It then occurred to her that, of course, the sky was incomparably the best place to show the Deed, for then no one could really avoid the sight of it. She wracked her brains for a way to introduce the Deed into the sky, and finally decided to thrust her head into a pond and drown herself while holding the Deed firmly in her hand. She believed that, once she died, her spirit would be free of her heavy body, and could carry the Deed aloft into the sky. And so it happened, and her spirit welded, with its own substance, the Deed to one of the stars, displaying it to all the world. As a result, what had flowed became fixed, what had improvised became standardized, and a greater orderliness and predictability flourished everywhere. So great a benefit was this to the Alak Empire that the Divine Family officially adopted the little girl, and the star was given her name, Chlawgar, which it still has today.
Alaks maintain that the world has always existed and always will; and, naturally, this goes for the Empire as well. While this idea stands at odds with the official history, which records many different accounts of the foundation of the Empire, the premise is nevertheless everywhere among them sustained. The Empire, it is at least implied, has always existed in its ideal aspects. Its tangible aspects must be realized in time by human beings. There is a belief among the Alaks in what is known as the “impossible time” that somehow preceded proper time, and the sly influence endures as a present remnant of the impossible time, accounting for the various setbacks the Empire has encountered throughout its history. Is it surprising to read that the Deed of Talorow, that mighty ordering power, is the work of the entropic sly influence? This is not clear at all, but one might speculate that the sly influence was once considered to be more lethargic, passive, and inert than it later came to be. In any case, the Deed of Ilianeghis in this story is likewise a work of the sly influence, imbued with all of its out-of-place, chaotic, and inventive power. This explains its cursed, dangerous character.
The term “Zaman Wislin” refers both to a divinatory philosophy and to its adherents, or “mathetes.” Since it is recognized by the Predikanten, the Alaks tolerate its existence. While they are not a cult, Zaman Wislin do claim to be in a tutelary relationship with a godlike dragon called Gilshrakes who is at the center of the universe. They are commonly supposed to collect Deeds of the sort mentioned here, and might perhaps also be able to draft new Deeds themselves, which explains their role in this story.
Our narrative’s main character, Temedy, belongs to a category of personalities familiar to most Alak readers and listeners. She is the ne’er-do-well, the malcontent who joins in the work of the Empire without enthusiasm and is not at one with it in her heart, and entertains these feelings of disaffection because she is too weak and foolish to resist them. Temedy is the inadequate instrument, someone who is not sufficiently real. This type of character is always attractive and talented, the better to emphasize what a waste they make of their lives, and what a loss that is for the Empire. The story is a cautionary tale intended to help readers and listeners correctly identify this type when they encounter it, and thence to take appropriate action respecting them, but there are stories about such characters finding their full reality, for example, in confronting a challenge.
These characters are often named “Temedy” for ease of both recognition and application, since this name is not one that any real person would be given. Its etymology is obscure; it is most probably derived from the Gaboktja Ujhik word “temeschlem,” meaning tatterdemalion or guttersnipe. The title of this story reflects this preferred derivation, but there are those, including Quil Qusogh himself, who maintain that the meaning stems instead from the Lemkhitz word “demd,” meaning sickly, pasty, disorderly, or meagre.
Finally, a “soul burner” is an Alak hobgoblin, who devours the evil spirits once believed to infest the world, in order to absorb their strength and cause greater mischief.
Once upon a time there lived in the village of Sogtrul a shiftless, threadbare young woman named Temedy who was good for nothing. She worked as a copyist for the calendary, slept in a loft above the offices, and eked out a living that barely kept body and soul together. No one who looked for her, and there were not many who did, could ever find her, because she was always wandering off into the countryside. She would stray for hours among the hills, often walking all the way to the feet of the mountains. To be sure, if she weren’t expected at her desk, she would have climbed them, perhaps never to return. Her parents were dead; her only living relation was a married sister who rightly repudiated her, who had prospered her education and now lived in the great city of Sunflik, where she conducted highly important business. Temedy did not seek out her sister, but languished in hapless devotion to the idle and melancholic daydreams with which her mind busied itself during her solitary rambles. No one in Sogtrul had the least respect for her, so why should we listen to her story?
You’ll see!
For there was a day when, stumbling along at random as usual, she blundered across something strange. It was a place at the feet of the mountains, where rolling grasslands crack open in crevasses and where slender brooks fan out at intervals like lacework. There was one spot in particular where people used to cut whetstones for sharpening barber’s razors, and the heavier blocks were used to press cadavers for preservation. This was done, as you may know, by placing the corpse on a slab with a slight concavity to it, then surrounding it with blocks of ice. Another matching slab was then laid on top, and, as the ice supporting it melted, it would sink gradually down and flatten the body without crushing it to a pulp. The cadaver would keep indefinitely afterwards, like a pressed flower. Places like that attract Zaman Wislin; they come looking for ghosts, elementals of work, haunted winds, portentous lights, and, above all, archaic inscriptions, hidden texts, forbidden scrolls, to winnow the dragon-secrets of Gilshrakes from them. At one time they had a camp there, which they left for reasons as mysterious as their reasons for establishing it in the first place, and their abandoned tents, now little more than long white rags knotted firmly to their frames, were still there. No one could say why, but they had named their camp “he Cloister of Glowing Cores,” and the name endured after they were gone. Temedy had read the name many times in the records and letters of officials that she had been called upon to copy, and indeed she was so addicted to reading things not pertinent to her duties that she had sought out and studied other historical documents in crumbling district ledgers, to no better end than to appease her curiosity.
Now, as if in a dream, she saw this fabled spot with her own eyes. The rags of the ruined tents billowed in the incessant wind like water weeds in a strong current, so she could hear them flap and rustle like a great fire without heat or smoke. It was a lure too strong for her feeble willpower to resist, and she descended down to Glowing Cores, wondering if she might find some traces of the mathetes there, or other trash of former days heedlessly thrown aside and tramped down by people with better things to do.
She was just passing a small stand of trees when a hacking cough erupted somewhere nearby, and Temedy realized that she wasn’t alone. In a spasm of cowardice, her first impulse was to hide herself, and she did not resist it. Temedy scrambled back toward one of the trees and put it between herself and the direction the cough came from, then watched carefully, crouched down, not daring to breathe. A moment later she saw a figure in black walk stiffly out from behind one of the ruined tents. It was an older man, clean-shaven, in black clothes. He carried his head erect and his shoulders square, his rigid back was unnaturally straight, so that he moved a little like a puppet on a stick, turning his whole body to look this way and that. It was obvious that he was searching for something he expected to find on the ground.
Temedy didn’t want to have anything to do with this stranger, but, she would certainly be seen if she fled, and that was not something she wanted either. What she wanted was for the stranger to go away, so she could go on exploring. Instead, he came directly toward Temedy’s tree, swivelling this way and that as he continued to examine the ground, without pause. Temedy thought frantically—could she manage to creep around the tree as the man passed, or should she make a run for it? Too late! The man was already there, and saw her.
“Well, well,” the man said.
Temedy could only say “Well!” in reply.
The man had a harelip and strange, round eyes, like two circles, so Temedy could see the whites going all the way around the pupils. His black clothes were made of some rich, heavy stuff like bombazine that was all stained with salt from the man’s dried perspiration. Indeed, there was so much salt in his clothes that little puffs of it came out when he moved.
“Have you come from—far away?” the man asked. His teeth flickered as he spoke, white as chalk.
“Not . . . not very far . . .” Temedy spluttered. She didn’t like telling this man anything about herself. He dressed and acted a bit like an official, so she asked him, “Are you . . . from the calendary?”
“I’m Obelizer,” the man said, and smiled broadly without parting his lips. His voice was hoarse and low, but it was the kind of voice, Temedy knew, that could boom out deafeningly loud if necessary. “From the Shrine of Zeroes.”
That, Temedy knew, was the name of a fane where the mathetes of Zaman Wislin lived, on the mountains’ far side. You can know someone is Zaman Wislin if they have a name like that, because they leave behind their wholesome names when they become Zaman Wislin, and receive new names that reflect what they do. Every mathete will also have something wrong with them, but it won’t always be as easy to spot as that harelip, so examine every stranger you meet carefully and be suspicious of little irregularities.
“I’m uh, Temedy,” Temedy said. Of course, giving her name away was the last thing she wanted to do, but, when a name is given, a name must be returned, and Temedy was too frightened to invent one.
“Have you happened to see,” the man asked, “a wooden document case, about this large?”
His long hands drew a sort of rectangular shape in the air, to show Temedy what he meant. The flowing motion of his hands was at odds with the stony immobility of his body, so that it seemed as though they belonged to someone else, standing behind him.
Temedy shook her head.
The man lowered his hands to his sides and sniffed. He gazed at Temedy with an enigmatic expression on his face.
“It’s—a fine day,” he said at last. Only then did he look up at the sky, tipping his whole body back at the waist to do so, then returning to his former posture. You may have noticed he has a curious way of speaking too, but that was in keeping with what he did. An obelizer is someone who cuts things out of pieces of writing, and marks the cut with a little drawing of a knife to show where it happened.
“I was just going for a walk,” Temedy said.
Obelizer smiled that same close-lipped smile at her. Temedy found it hard not to stare at the man’s upper lip, joined in two halves so that it seemed as if it were expressing two different emotions at the same time.
“You seem to do quite a bit of solitary walking. That’s because you live with people who don’t understand you,” Obelizer said.
This was more than Temedy could stand.
“I ought to be going,” she said, turning away.
“I will reward you if you help me search,” Obelizer said.
Temedy stopped.
“Reward me? What with?” she asked.
Obelizer chuckled, and his shoulders jostled up and down.
“Well—with money—if you don’t mind!” he said.
When Temedy turned to face him again, Obelizer was looking toward the horizon beyond him.
“What comes from the mountains must—go to the sea,” he said. “I must bring that case to—Tulltillarna, and that is long travel from here on foot.”
Temedy had never heard of Tulltillarna, whatever that was. Perhaps you have?
“So, the sooner I find it and begin my—journey, the sooner I’ve done what I set out to do,” Obelizer went on, facing her again with a businesslike air. “Will you help me look?”
Of course, she was still frightened, still full of the desire for escape, but there was something else, perhaps in that name, Tulltillarna, and in the dreaminess in Obelizer’s eyes as his look flew away into the distance, a kind of call, evilly soft, that very gently caught her.
“I’ll help,” she said, without knowing why.
With a little shower of salt, Obelizer’s hand lifted from his side. He pointed down toward a few of the larger ruined tents that stood apart from the rest.
“Search over there,” he said, with some authority, and Temedy began moving at once, stopping only when she came near her destination. Then, not quite sure where to begin, she glanced back and saw Obelizer hadn’t moved, but stood smiling at her. He nodded at Temedy, as if to say, Go on, start looking! He must have been waiting, Temedy thought, to make sure she did what she was told, but that didn’t account for that broad split smile there on his face, did it?
Temedy began to poke around in the rags and wreckage of the tents. While she worked, she couldn’t shake the feeling that Obelizer was watching her. It made her whole back prickle, and the hair on her scalp bristle. Obelizer had gone off out of sight, toward the other group of ruined tents, but Temedy was too afraid to defy him and leave.
The sooner I get this over with the better, she thought, and she hurriedly rummaged in broken tent poles and the tumbled stones that had formed the lower foundations. She found a little heap of spent candle ends, like a pile of wan coins. There were trampled quill nibs everywhere, and the fragments of smashed ink pots still stained black. The awkward metal-and-leather contrivance she pulled out of a twist of canvas proved to be a false leg, terminating in a wooden facsimile calf and foot all painted a fanciful canary yellow color with chipped purple toenails. The foot and leg were split and badly cracked, and the metal bands in the harness had been twisted all out of shape before the rust began to bite, and she wondered at the accident that had led to its being discarded. Then, as her mind began to wander into stupid daydreams about dainty, one-legged people, her eye fell on a straight length of polished wood, dully gleaming beneath another heap of canvas and wooden rods. Sure enough, when she pulled it out, it proved to be a document case. Without thinking—and do I need to tell you what happens when you act without thinking?—she undid the hasp and peeked inside.
The case contained a single sheet of parchment, white and flat with trim edges, and adorned with characters that caught the light like silver. There were red and blue ornaments drawn into the lines of writing, which crept all over the page like snail tracks. That red was as deep as artery blood, and the blue was like the color of the sky as dusk begins over the mountains, or like the ocean is sometimes. The size of the writing varied as the lines warped across the paper, but the largest letters spanned the top of the sheet, and her eyes, all too quickly, read them. They spelled out “DEED OF ILIANEGHIS.” A fragrance like incense wafted up from the page and billowed over her face as she impulsively snapped the case shut again. Abrupt fears had beset her, and—do I need to tell you?—her heart flooded with a wild desire to possess this parchment. Hadn’t she found it, after all? But she felt, and perhaps even she knew what madness this was, that the parchment was already hers.
A quick look around told her that Obelizer was still out of sight, so she pushed the case down into her scrip. She always brought some bread rusks and a tiny pot of butter to munch on if she got hungry, and she rammed the case down under them. Then she pretended to continue the search, her mind going in a thousand different directions at once, until Obelizer appeared again by the stand of trees where they had spoken before, and beckoned.
“I found nothing,” she lied, when they were close enough to speak. She realized that her deceit would be more plausible if she could meet the man’s gaze, and when she raised her eyes, she saw that Obelizer was once again smiling his closed-lipped smile.
“Ah well,” he said. “It must have been found—already.”
He swivelled to give his surroundings one last look.
“I am sure that it is not lying around here anymore,” he added as he gave Temedy his full attention again. “Thank you for all your help.”
Temedy nodded, waved, and began to leave.
“Just a moment!” Obelizer said.
Temedy’s heart sank.
Obelizer’s hand lifted and turned palm up. Gold coins shone there.
“Your payment.”
“But … I found nothing!” Temedy said.
“But you—searched,” Obelizer said. “Work is work.”
Temedy reluctantly took the coins from the outstretched hand, which was as cold and dry as rock. As Obelizer made no further remark, but only stood there, Temedy told him goodbye and returned home. It was difficult to fight the impulse to run, and, after all, why shouldn’t she hurry? The day was drawing to a close, and she had money now. The feverish sensation of being watched chilled her as she went, although furtive glances over her shoulder failed to disclose any sight of the strange, stiff man, Obelizer. Those Zaman Wislin types always have a reason for speaking with you, you know. Well, of course he’d had a reason! He’d needed help looking for that document case! But what if there were some other reason? Something to smile about? Was Temedy carrying a curse back to the homely lanes of Sogtrul? The coins she carried, tucked into her shirt, banged heavily against her chest, and later she found they’d left a bruise there, right over her heart. Was that her liar’s mark?
But nothing mattered apart from her ferocious desire to peruse the piece of parchment that she carried, like a sort of miracle, down under her dinner in the battered, hand-me-down scrip she’d received from the village interlocutor in exchange for scorekeeping duty at the winter card games. Thoughts, visions, and feelings all boiled up and erupted so vividly she could barely see the dusty track that wound back to the village.
Temedy went directly to the loft where she slept. She decided to hide the case beneath her straw mattress and, when she knelt down, pulling the case from her scrip with many desperate looks, the gold coins Obelizer had paid her tumbled out onto the blanket. They shone there with a light of their own, three of them, big as belt buckles, and there were big crumbs of salt clinging to the letters and the sacred emblem of the termite. These she pushed into her scrip, which she tossed aside. She didn’t dare spend money—what did she accept it for? If she turned up with gold coins somewhere, what talk would there be about her? All she wanted to do anyway was pore over the Deed, but Dzudzu the gardener kept his tools and things up there and was liable to appear at any time, so that night she lay on top of the mattress on top of the case, unable to sleep. From time to time, she fancied that the fragrance of the parchment was teasing her again, and followed her into intense dreams that left her dazed in the morning, without leaving behind even the slightest memory of what they had been.
Except perhaps for one image: three lips closed in one broad grin.
Her responsibilities the following day were unusually light. She perceived this as a stroke of luck, but how often do we mistake our bad fortune for good! Temedy thought herself lucky to have the opportunity to study the Deed in secret, with the bright sunlight to read by, in one of the many hidden places she knew outside Sogtrul. Today she picked a little wooded hollow with a pond at its bottom, where she could sit on the big rocks there and no one would see her unless they came right up to the edge of the slope. The day was brisk and the sky was filled with rushing clouds; the daylight ebbed and brightened and a little wind frisked through the grass and stirred the tops of the trees in the hollow. But, down by the water, the air was always still, the pond eerily still, still, still, still, and quiet, quiet, quiet. In such a place, as silent as a library, Temedy knew she could read carefully, without distraction—but then, when didn’t she? And so she did, while the light came and went, and the sun traversed the sky unheeded above her. You see what comes of reading things you shouldn’t?
Now I am sure you will all want to know what the Deed said, but if I recited it to you word for word, then I would be guilty of casting a spell! So, to be safe, I will only describe the document’s contents very generally. It referred to a place by the sea called Tulltillarna. She recognized that odd name; Obelizer had mentioned it. There was no doubt about it now. This was the very parchment he had been looking for. And, like any Deed, this one conferred a kind of ownership, and certain rights, to the holder.
To the holder! Why, wasn’t she the holder? But then, was mere physical possession of the document sufficient to grant her the right to the rights it granted? Did she have the right to be granted rights? If she were to come forward and exhibit this Deed—and who to, by the way—would it be snatched indignantly from her? Or—stunning thought—would the stony indifference of the official face melt into a kind of ritual deference?
When dusk welled up from the water and began to fill the hollow, Temedy was lying on her back, draped across the rock, staring up at the sky without seeing it. The Deed, restored to its protective case, she pressed to her chest with both arms. Temedy didn’t know if she were dreaming or awake. She rose numbly and began making her desultory way back to Sogtrul, barely recollecting herself enough to stow the document case back out of sight in her scrip again. This daze did not fade; she was as numb as a sleepwalker, so that even her employer began to worry about her.
Perhaps that idiot’s mind has finally gone altogether, he thought. Please, not now. It means a consultation with the Controller and an arrest. Oh, Divine Family, don’t add that to my troubles!
He needn’t have worried, however. It was becoming more and more clear to Temedy that she had to find Tulltillarna, to see just what it all meant, or some of what it all meant, or if any of it meant anything—she didn’t fail to realize that the parchment was old, that other arrangements might have been made in its absence that would prevent her from realizing its promises. But to ignore it, that she had not the strength to do. She had dreamt again and again of that closed three-lipped grin, and she knew what it meant. It meant something ominous, which did not fail to include an acknowledgement that, having plainly grasped that omen for what it was, she could never reject the Deed. She would go toward that smiling promise full of dread, not so much for what she thought might happen—whatever that would be, it would be bad, she knew that—but that it waited in particular for her, like nothing else in her life, and she had to see it for herself.
You have to feel a little sorry for her, don’t you? Surely, if there had been those around her who cared more for the stability and regularity of things, they would have risen above their disgust for Temedy’s worthlessness and seen the danger that she posed. A timely intervention now, just as she went about surreptitiously gathering what she needed for her journey to the sea, in search of a chimera called Tulltillarna, and under the spell of an evil document, would have fended off . . . Well, I’ll show you.
A woman travelling alone under the best of circumstances will go in fear, and Temedy, bearing as she did a treasure that had quickly become more important to her than her own life, and weak in her mind, went in mortal terror with every step. But go, she went! The impetuous zeal of her own fantasies swept her from the outskirts of Sogtrul unseen in the dim, predawn hours, and carried her down the arduous, rolling way into the land of the Nemosems, and toward the sea beyond. Her blazing eyes rolled in their sockets without ceasing, looking everywhere for the sight of another traveller, and when she spotted people toiling along the road, on foot or in a cart, in a group or alone, she left it at once and concealed herself until they passed, or struck out through the trees or clambering over the rocks, always making her way with pain toward the coast. For three days and nights she walked, not sleeping, barely pausing to make a wretched meal of the meager provisions she had managed to bring with her. The three gold coins Obelizer had given her were concealed in a little bundle she had tied to a cord around her neck, and the bundle hung down inside her shirt, slamming into her chest with every step, darkening the bruise over her heart. She hadn’t dared to spend them, but brought them with her because she wasn’t sure she would ever return to Sogtrul, and believed in their protective power as if they were a magic talisman. That gold would help her survive, she thought, if she needed help. But so afraid was she of being overtaken in the dark, and so wild were her thoughts with fantasies of what she might find, like waking dreams that made it hard to see the actual world around her, she couldn’t sleep, or even rest, but dragged herself three days and nights to the sea.
When she first caught sight of it, she stood stock-still for a long time. She had never seen the ocean before, you know. What a sight! Blue, blue, blue, document blue, and wide, wide, wide as the sky. It was like another sky, lying flat on the land, looking up at its paler reflection in the air. It was placid and windy, and the air was flying with salt. Great white birds were there, laughing at her as they sailed effortlessly around and around in circles of their own. She had found the sea. Now, to find Tulltillarna!
A cliff split the road into two turnings that ran parallel to the shore. Not knowing which way to go, and being assured that she was completely alone, Temedy pulled out one of the great golden coins Obelizer had given her.
“Heads left, tails right!”
The coin landed head up, the termite glinted and flared like a firework in the wind-whipped sunlight. She retrieved it, and then took the left turning and walked along the top of the cliff, a white track in green grass overlooking a tan beach with a blue sea and white froth, a pale blue sky and pale white clouds. The road fell and rose again, and, when she had come to the next high point, she saw before her another road coming from the direction of the mountains, almost exactly like the one she had just quit, but with one important difference—a signpost. Temedy hurried down to read it, and her heart bounded in her chest when she made out the faded letters that spelled tulltillarna on a pitted stone arm that pointed further down the coast. With luck—with luck, she thought!—she would see it soon, perhaps from the next rise, and she hadn’t had to ask a soul! That part of the coast seemed deserted, and the borders of the road were encroaching back on it.
Temedy saw no sign of Tulltillarna when she reached the next high point, nor the next, but then, as she came within view of the land beyond the third high point, she thought she might have caught a glimpse of a gaunt spire, a plume of smoke, or a banner flapping, somewhere beyond, but though the day was clear, her vision was hazy and uncertain from fatigue and want of food, so she couldn’t quite be sure. She pressed on. With a near desperate longing she now went toward the next prominence, which would tell her if that fleeting impression had been a vision or real.
What lay before her, when she reached that place, was a short green slope that levelled off to form a vast natural shelf, a flat space sheltered by rising ground. Where the green ended, the white sand began and slid down into the sea. The cliffs subsided here, so that it was possible to walk all the way down to the breakers. As Temedy advanced to get a better look, her foot struck against a great bronze marker, evidently welded to the exposed rock. There was a corroded square hole in the center, into which, she thought, a signpost might once have been fitted, and there was, too, etched into the bronze, a curious mark: a diamond with horned stems protruding from its four corners—the kaikalak, symbol of Zaman Wislin. This discovery prompted her to look again, and now she saw low angles in the earth of that flat space, and lines, and realized they were what remained of the foundations of buildings, walls, and streets. Then she knew she had found Tulltillarna, that her arduous journey all the way from the distant mountains to the sea had been for nothing, that there was no one left here to receive her or recognize the Deed of Ilianeghis. Temedy fell where she stood, wept and wailed aloud, lying across the heated bronze of the defaced waymark.
When she had recovered sufficiently to take stock of her situation, she was too indifferent now to her own fate to give it much thought. She continued down the path, which drove right through what must once have been the narrow, winding main way of Tulltillarna, and so on down the coast. She left the confines of the town that had once been there. As the sky darkened, and the wind of the sea began to bite, she noticed a tumbledown cottage not far from the road, and approached it. As she drew near, she saw no sign of life, no smoke, no light. The place was overgrown with flowering vines, and there were a few stunted, gnarled trees keeping it company; but there were crabapples on those trees, and, at sight of them, Temedy’s hunger got the better of her. She staggered to the nearest tree and began picking and eating the fruit, which was ripe enough, if tart. As she restored herself with the crabapples, she studied the house with better attention. The door was closed, but not fastened. She called quietly, knocked quietly, tried peering through the shutters—nothing.
When night fell, Temedy was sitting inside the cottage by the hearth, warming herself with the fire she had managed to light. There was some tinder and a little wood left, grey and bone dry, a flint to strike sparks with, and the chimney still drew. The wind whistled around the stone walls all night long, and Temedy heaped up rags she found and made a sort of nest by the tiny fire. She lay there, shivering with cold and misery, but grateful for the shelter she had found.
Round about, from farm to farm, and through Sluich Temnook, a tiny hamlet that was the only village on this part of the coast, Temedy went, running other people’s errands, helping people with their chores. She made enough to keep herself alive, and then hastened back to the cottage she had come to think of as her own, because it was the repository of the Deed, whose magic lit up her face every solitary night, and whose disjointed words fell into her dreams as randomly as rain.
One morning came, as it must, when she remembered her dream in waking life, which you must be very careful about. In her dream, she had been lying on her rag bed by the hearth. The fire was completely dead, but there was a kind of eerie light outside in the darkness that she was too weak to ignore. There in the sky, the moon hung new, a great black ball that hovered in the starry blue. It seemed to watch her, she thought she heard it breathe, and don’t you know the sly influence is greatly encouraged whenever the moon evilly veils its face altogether, and hides itself? In the darkness and stillness, for there was no wind, and the waves below did not stir, but lay flat and entranced like the grass and the branches of the crabapples, there was a wrong sort of light that shone down on her, and she thought of Tulltillarna—what would it look like now?
Well, of course, it looked the same way it always had. There below her, as she stood again by the bronze marker, were the grass, the lines and angles. In her hand, she found the document case. She opened it. The Deed of Ilianeghis shone there like a lit windowpane in her hand. She began at once to read the words aloud, like an incantation. She read and read and read, going back to the top of the page whenever she reached the bottom, but without ever finding the end, and the more she read, the more there was to read. This is the sign that the voice you hear belongs to the sly influence—never listen to it. Temedy knew this, but perhaps, in her foolish excitement, she forgot. The words rose up before her. They quit the page and floated up before her eyes. She was reading the Deed of Ilianeghis without looking at it. She was reading it everywhere. Even when she shut her eyes, there were the words, most distinct of all! Temedy opened her eyes. The new moon hung before her in the sky and the silence like an uncreated world waiting to be born.
She began to speak. Speech makes things real. She saw a wall in her mind. She spoke it, and it was there! She saw a street. She spoke it, and it was there! She saw a whole town before her. She spoke it, and it was there! She saw people in the street. She spoke them, and they were there! Tulltillarna . . .
Temedy sat for a long time after awakening from this dream, panting with fever. Everywhere she saw the needle-like spires, the winding ways, the windows aglow with amber light that spilled into window boxes overflowing with clustered, aromatic flowers, and there were wind-whipped pennants and radiant figures who moved gracefully in the shadows or stood with stolid dignity on the ramparts. She heard a stately sound of bells and a murmur of curious words. When she could collect herself, she went to see Tulltillarna again, and it was once again the level zone of green grass, lines, and angles, the traces only of what had been. And so she brought out the Deed of Ilianeghis and began to read it aloud, this time by daylight. She read and read, starting over at the top of the page whenever she reached the bottom, and she tasted her own blood, and her arms and legs went cold and numb, and her head grew at first light, and then heavy, throbbing, and painful, but the words kept marching out of her mouth, even as her vision faded, and the pain in her head became so terrible that she felt as though huge hands were tearing it in half.
A shepherd passing that way with his flock later in the day saw what he at first took for a heap of rags, oddly gathered there up by the old bronze marker. He had to draw very near before he saw that there were feet and hands emerging from it, and fine old parchment lying nearby in a wooden document case. But the woman lying there was dead, and a broad red band of blood streaked the grassy slope from her body, extending so far that it ended by touching the foundations of the wall that once had encircled Tulltillarna. All the blood in her body must have soaked into that ground, there was so much. The shepherd, without thinking, thought to turn the body over, and see who it might be. It was only then that he realized her head was gone, nor was there any sign of it. And when the authorities came from Sluich Temnook, they said at once that her head had pulled itself from her body, that the corpse was haunted and must be burned and the ashes scattered. This was done on the day, and the streak of blood was salted. The Deed of Ilianeghis was likewise cast into the flames, but would not burn. So, it was sealed in a lead casket and flung into the ocean instead. The authorities wisely forbade everyone to approach or disturb Tulltillarna, surrounding it with warning markers. Correspondence with the regional advisory committee was initiated, to see if steps should be taken to bury, destroy, or exorcise the site of the old town.
You may be inclined to feel a little sorry for Temedy—but the story is not over!
No, because, for one thing, that red streak never faded, and the grass never covered it. In fact, that red tint began to seep into the stone foundation of the wall. Passersby, who, of course, did not disobey the warning markers, could not have known this, but official surveyors were given limited permission to enter the area, and their reports made the rounds, the way these stories always do. But then there were others who, hurrying past the boundaries on weirdly still days, or after sundown, overheard a solitary voice raised in song somewhere within the cordon. The song went:
I’m all rips and rags, I hang in shreds,
Salt on my tail, and cracks in my head,
I’ve got a hunger that can’t be fed,
Salt on my tail, and cracks in my head,
There’s not one day I don’t wake up dead,
Salt on my tail, and cracks in my head.
There were times when this song, or at least the echo of its melody, could be heard here and there in the lonelier places along that part of the coast. Solitary travellers, shepherds, and circuit riders reported sightings of a ragged woman rambling on the cliffs, singing to herself, and those who ventured nearer said that what had, from a distance, appeared to be long flowing locks of hair, were only rags that billowed and flapped in the incessant wind like water weeds in a strong current.
A traveller who accosted her found himself confronted by a face of crumpled rags, with a torn mouth and torn eyes, and she asked him what he wanted, and the voice came not from the bundle atop her neck, but from the bulging satchel she carried. He said she held out a long skinny hand and offered him three huge gold coins, with crumbs of salt clinging to them, if he would guide her into town, and he ran from her half mad with fright. Others had similar encounters, and one young girl who met her on the shore was so terrified that she fell into a brain fever that nearly killed her, and permanently robbed her of her sight. She raved that she had seen the ragged woman walk up out of a shadow on the ground like someone coming up the stairs from a cellar. As she fled from the apparition, the girl threw a look back over her shoulder and saw her, and behind her, a mountain stood where the ocean should be.
The regional officials posted to the canton received word from the land of the Nemosems that a sort of evil spirit was afflicting Sluich Temnook, that it crept into people’s houses at night and devoured all their food, that it crept into people’s barns and devoured every last grain of barley, every last onion, whole wheels of cheese. Worst of all, this spirit seemed to have a special preference for the taste of gold, for she had been seen guzzling coins from the town coffers, and no hiding place seemed proof against her, because she could smell the gold wherever it was, and now, they said, her rag mouth shone, all smeared inside with gold.
“When you try to catch her,” they said, “she just turns into a faded grey rag and flutters away in the wind, back to Tulltillarna where no one can follow her, because it isn’t there.”
And so Sluich Temnook declined, and the people moved away, and no word came from the regional council because the messages had never reached them, and the land around became abandoned and desolate, because no one could keep anything they made there, and no one could catch the raggedy ghost who sang:
I’m all rips and rags, I hang in shreds,
Salt on my tail, and cracks in my head,
I’ve got a hunger that can’t be fed,
Salt on my tail, and cracks in my head,
I’ll eat all your gold, and all your bread,
Salt on my tail, and cracks in my head,
Here’s where I live, and here’s where I’m dead,
Salt on my tail, and cracks in my head . . .
So if you hear the tatterdemalion singing, you don’t stay to satisfy your curiosity but leave as you came, without so much as a glance over your shoulder as you go. Throw down your bread or your gold and leave it to her, if you don’t want a fever, if you want to keep your sight. And if you don’t want to become a tatterdemalion yourself, remember how she got that way!
“Tatterdemalion” copyright © 2026 by
Michael Cisco
Art copyright © 2026 by Raven Jiang
The post Tatterdemalion appeared first on Reactor.
Spotting and Avoiding ROT in Your Agentic AI [Radar]
The following article originally appeared on Q McCallum’s blog and is being republished here with the author’s permission.
Generative AI agents and rogue traders pose similar insider threats to their employers.
Specifically, we can expect companies to deploy agentic AI with broad reach and insufficient oversight. That creates the conditions for a particular flavor of long-running problem, which in turn creates a novel risk exposure for both the companies in question and for anyone doing business with them. The bot and the rogue trader are able to inflict sizable, sometimes existential, damage to the firms that employ them.
The key difference is the scope: Rogue traders operate in investment banks, while agentic AI will be deployed to a wider array of companies and industry verticals. Agentic AI may therefore create a greater number of problems than rogue traders and put a greater amount of capital at risk.
I’m naming this risk exposure ROT—Rogue Operator Threat—and this document is a brief explainer on what it is and how to address it.
(I almost called it RAT, with the A for “agentic,” but then realized that it would apply to any kind of automated system. So I broadened the scope to “operator.”)
To set the stage, let’s take a trip to the trading floor:
Rogue trader scandals follow the same storyline:
This cycle continues until they’re caught, at which point the bank is sitting on a large loss (sometimes into the billions of dollars) and the trader faces legal repercussions.
The story of Barings Bank offers a concrete example. Trader Nick Leeson had been logging fraudulent trades, over a stretch of three years, in an attempt to cover his mounting losses. This only came to light when the Kobe earthquake shifted markets against his most recent positions and the losses were no longer possible to hide. Leeson’s £800M ($1.3B) hole drove Barings to bankruptcy just three days later.
This is when you’ll ask: How could a professional trading operation let so many bad trades slip through undetected? How could a trader falsify records? Aren’t trading floors high-tech operations, full of electronic audit trails?
And the answer is: It’s complicated.
Trading operations do keep records, yes. But no system is perfect. Each time a rogue trading scandal comes to light, it turns out that there were loopholes in risk controls. A sufficiently motivated trader—especially one desperate to hide their mistakes—found and exploited these loopholes, continuing their losing streak in plain sight until they could bring in real money to backfill the fake records.
That “until” never happened, though. Which is why their employers then faced financial, reputational, and sometimes legal troubles.
Similar to a trader, an AI agent operates on behalf of its parent business and is given room to operate independently so it can accomplish its tasks.
The risk is that, in the rush to deploy agentic AI, these companies will likely grant the bots more leeway than is necessary. We’ve already seen cases in which bots have been able to delete emails and wipe a production database. And there are no doubt other stories that haven’t made it into the news.
Those issues were at least caught in real time. Companies facing ROT are exposed to additional longer-running problems in which the bot is able to accrue losses or inflict greater damage over an extended period. In those cases the problems will only be uncovered by accident and/or when it’s too late.
Consider, for example, an agent that creates false data records to reflect (nonexistent) sales orders. It’s possible for this to run until some external event, such as investor due diligence or a budget review, forces someone to double-check those records against reality.
How can you narrow your downside risk exposure to ROT? Preventative measures are key. Strong risk controls, narrow scope of authority, and monitoring can catch rogue operator problems long before they’ve metastasized into an existential threat.
In light of rogue trader scandals, trading shops have been known to tighten risk controls and also separate duties to create a system of checks and balances. (This inhibits traders from logging their own fake trades.) Companies also require traders to take time off, as fraudulent activity may surface when the perpetrator isn’t around every day to keep the system running.
Adapting these ideas to agentic AI, a company could monitor and limit the scope of the bot’s activity (say, requiring human approval to place more than 10 orders an hour). It could also periodically purge the agent’s memory so it doesn’t accumulate too many evolved behaviors, or swap in completely new bots to pick up where the previous one had left off. And per my usual refrain of “never let the bots run unattended,” this company could employ people to cross-check everything the bot does. Trust, but verify.
This will not prevent the AI agent from making mistakes. But guardrails and sufficiently frequent checks should limit the scope of the bot’s damage. As with the rogue trader, the ROT problem isn’t about a single error; it’s about letting the errors grow out of control, undetected.
Jonathan Dowland: Digital gardening [Planet Debian]

I was reading a post on Alex Chan's website1 that referenced the concept of digital gardens, a concept/analogy for organising information which dates back to the 90s. This old concept is getting new traction today by contrasting the approach with "endless stream" as used and abused by social media, but also how blogs are typically presented.
This site, my homepage, has a blog, and that's the bit that most people who interact with the site will experience. Partly, because it's the bit that gets syndicated out: via feeds; on Planet Debian and downstream from it; once upon a time on Twitter; nowadays on the Fediverse.
However there's more to my homepage than that. The rest of it may be of little interest to anyone beside me, but it's useful to me, at least. So I may switch focus a little bit from mainly writing blog posts, and tend to the rest of the garden a bit more.
Some recent seeding and pruning: Recently my guest status at Newcastle University came up for renewal, so I wrote down my goals in the Historic Computing Committee for the next year or so, and put them here: nuhcc. I've also been pondering what I'm up to in Debian at the moment, so took some time to add my current projects to that page.
Digital Hopes, Real Power: Reflecting on the Legacy of the Arab Spring [Deeplinks]
This is the first installment of a blog series reflecting on the global digital legacy of the 2011 Arab uprisings.
A new generation of protesters, raised on social media and often fluent in the tools of digital dissent, has taken to the streets in recent months and years. In Bangladesh, Iran, Togo, France, Uganda, Nepal, and more than a dozen other countries, young people have harnessed digital tools to mobilize at scale, shape political narratives, and sustain movements that might once have been easier to ignore or suppress.
The tools at their disposal are vast, allowing them to coordinate quickly and turn local grievances into visible, transnational moments of dissent. But each new tactic is met in turn: governments now implement draconian regulations and deploy sophisticated surveillance systems, content manipulation, and automated censorship to pre-empt, predict, and punish collective action.
This cycle of digital empowerment and repression is not new. In many ways, its roots can be traced to the 2011 uprisings that rippled across the Middle East and North Africa. Often referred to as the “Arab Spring,” these movements didn’t just reshape politics…they transformed how we talk about the internet, and how governments respond in times of protest, crisis, and conflict. Fifteen years later, the legacy of that moment still defines the terms of resistance and control in the digital age.
At the time, we were sold the comforting narrative that the internet would help bring about democracy, that connectivity itself was revolutionary, and that Silicon Valley’s products—particularly social media platforms—were aligned with the people. It was a narrative that tech executives were sometimes happy to amplify and certain Western governments were happy to believe.
But the same networks that helped protesters to organize and broadcast their demands beyond their own borders laid the groundwork for new forms of repression. Over the years, the same tools that were once celebrated as tools of dissent have become instruments for tracking, harassing, and prosecuting dissenters.
This series examines the digital legacy of the 2011 uprisings that shook the region: how governments refined censorship and surveillance after 2011, how platforms alternately resisted and enabled those efforts, and how a new generation of civil society has pushed back.
"Over the years, the same tools that were once celebrated as tools of dissent have become instruments for tracking, harassing, and prosecuting dissenters."
When Tunisian fruit vendor Mohamed Bouazizi set himself on fire on December 17, 2010, after repeated harassment by local officials, he could not have known the chain reaction his act would spark. After nearly twenty-three years in power, President Zine El Abidine Ben Ali faced a public fed up with repression. Protests spread across Tunisia, ultimately forcing him to flee.
In his final speech, Ben Ali promised reforms: a freer press and fewer internet restrictions. He left before either materialized. For Tunisians, who had lived for years under normalized censorship both online and off, the promises rang hollow.
At the time, Tunisia’s internet controls were among the most restrictive in the world. Reporting by the exiled outlet Nawaat documented a sophisticated filtering regime: DNS tampering, URL blocking, IP filtering, keyword censorship. Yet despite that machinery, Tunisians built a resilient blogging culture, often relying on circumvention tools to push information beyond their borders. When protests began—and before international media caught up—they were ready.
Eleven days after Ben Ali fled, Egyptians took to the streets. International headlines rushed to label it a “Twitter revolution,” mistaking a tool for a movement. Egypt’s government drew a similar conclusion. On January 26, authorities blocked Twitter and Facebook. The next day, they shut down the internet almost entirely, a foreshadowing of what we’d see fifteen years later in Iran.
As Egyptians fought to free their country from President Hosni Mubarak’s autocratic rule, protests swept across the region to Bahrain, where demonstrators gathered at the Pearl Roundabout before facing a brutal crackdown; to Syria, where early calls for reform spiraled into one of the most devastating conflicts of the century; to Morocco, where the February 20 Movement pushed for constitutional change. Outside of the region, movements took shape in Spain, Greece, Portugal, Iceland, the United States, and beyond.
In each context, digital platforms helped circulate images, testimonies, and tactics across borders. They created visibility—and, in turn, inspired a playbook. Governments watched not only their own populations but one another, quickly learning how to disrupt networks, identify organizers, and seize back control of the narrative.
Cause and Effect
To be clear, the internet didn’t create these movements. Decades of repression, corruption, labor organizing, and grassroots activism did. Later research confirmed what many in the region already understood: digital tools helped people share information and coordinate action, but they were neither the spark nor the engine of revolt.
But regardless, the myth of the “Twitter revolution” had consequences. The breathless coverage, and rapid policy reactions that followed shaped state strategy around the world. Governments across the region and well beyond invested heavily in surveillance technologies, developed new legal mechanisms, increased their own social media presence, and found ways to influence platforms. Internet blackouts, once rare, became a normalized tool of crisis response. And companies were forced into increasingly public decisions about whether to resist state pressure or comply.
When it comes to the internet, the legacy of the 2011 uprisings that swept the region and beyond is a story about power: how states moved to consolidate control online, how platforms—often under pressure—have narrowed the space for dissent, and how civil society has been forced to evolve to defend it.
This five-part series will take a deeper look at how the internet as a space for dissent and for hope has changed over the past fifteen years throughout the region and well beyond.
CodeSOD: Development Tools [The Daily WTF]
A few holiday seasons ago, Paul S was doing the requisite holiday shopping online, looking for those perfectly impersonal but mildly thoughtful gifts that many companies specialize in. This was one of the larger such vendors, well known for its fruit-filled gift baskets. As is not uncommon for our readers, when the site started misbehaving, he pulled up the dev tools. He didn't solve the problem, but he did learn a lot about how they were managing their API keys, as this was exposed to the client:
env: {
APP_AUTH0_GUID: 'ctZZL1BqgKm9kBmDEKAjt0yBeQ47Cpwl XS0xxpLFS5g8o-EUpSu4fi9ecOqN19WnXn-EqI9yaupwme22bKuBd2jH3Kf3QngZ',
APP_LOGGING_ENABLED: 'true',
APP_LOGGING_SERVICE_PATH: 'r/api/logging/mbp-ui',
REACT_APP_MBP_LOGGER_CONSOLE: 'ERROR',
APP_TIQ_ACCOUNT: '1800flowers',
APP_TIQ_PROFILE: 'full',
APP_TIQ_ENV: 'prod',
APP_PAYPAL_SDK_URL: 'https://www.paypal.com/sdk/js',
APP_PAYPAL_CLIENT_ID: 'AcYrxrOkFwUnMKRoJmkOR0N6caopqRNqwNRxy6H-EvZ-IKUz22i-E0uT0uMT7JQZEC33Oy1HCNsgm_le',
APP_PAYPAL_ENV: 'production',
APP_PAYPAL_SOURCE: 'PWA',
APP_VENMO_ENV: 'production',
APP_VENMO_PROFILE_ID: '2705494007504552889',
APP_AUTH_LOGIN_SOURCE: 'undefined',
APP_SG_BASKET_SCRIPT: 'https://cdn2.smartgiftit.com/scripts/widgets/gift-basket.js',
APP_AUTH_DOMAIN: 'login.celebrations.com',
APP_AUTH_AUDIENCE: 'celebrations-prod.1800-flowers.auth0.com',
APP_STATUS_BAR_ENABLED: 'true',
APP_WALLET_ENABLED: 'true',
APP_VERIFY_ADDRESS_HOST: 'api.edq.com',
APP_VERIFY_ADDRESS_AUTH_TOKEN: '47d991c9-043e-4073-bee3-a5c8922baa3a',
APP_FULLSTORY_ORG_ID: 'MXD30',
APP_GRAPHQL_ENV: 'production',
APP_VISA_CHECKOUT_API_KEY: 'B0LQRDVCE0LWKBHR880J14gCRlEjr_UqLhh6V-yYRAmcvD0W8'
}
I've gone ahead and mangled the keys, and given that this was a
few holidays ago, I'd hope the retailer in question has
fixed their website. But as you can see, it was pushing API keys
for payment processors, along with potential
authentication tokens and internal IDs. Now, I would hope most of
these required additional authentication to be useful, and that a
malicious actor couldn't do anything nasty with this information-
but that's a dim hope. Even with the data exposed here, I wonder if
someone could flip APP_PAYPAL_ENV to "development" or
"test" and run some transactions through. Or do the same with
Venmo.
This is a React app, based on some of the keys, using Graphql for communicating with the back end, and that hits at the fact that it's a single-page application. Probably, the developers were trying to build once for the web and for a "website bundled in an app" deployment for smart phones. And the result is that they weren't thinking about the distinction between "public" and "private" information- they had state to manage,so they managed it. By sending it to the client. Where anyone could see it. But it looked good, they shipped it, and they made sales, so everyone was happy.
For a time.
Sen. Wyden Warns of Another Section 702 Abuse [Schneier on Security]
Sen. Ron Wyden is warning us of an abuse of Section 702:
Wyden took to the Senate floor to deliver a lengthy speech, ostensibly about the since approved (with support of many Democrats) nomination of Joshua Rudd to lead the NSA. Wyden was protesting that nomination, but in the context of Rudd being unwilling to agree to basic constitutional limitations on NSA surveillance. But that’s just a jumping off point ahead of Section 702’s upcoming reauthorization deadline. Buried in the speech is a passage that should set off every alarm bell:
There’s another example of secret law related to Section 702, one that directly affects the privacy rights of Americans. For years, I have asked various administrations to declassify this matter. Thus far they have all refused, although I am still waiting for a response from DNI Gabbard. I strongly believe that this matter can and should be declassified and that Congress needs to debate it openly before Section 702 is reauthorized. In fact, when it is eventually declassified, the American people will be stunned that it took so long and that Congress has been debating this authority with insufficient information.
Over the decades, we have learned to take Wyden’s warnings seriously.
“Too complicated for people to understand” [Seth's Blog]
That’s a great reason to dumb things down. It’s also a trap that leads us to stasis and mediocrity.
Let’s break it down:
People: Which people? All people? The majority of voters? Day traders or institutional long term investors? Every VC or just this one?
Pick your people, pick your future.
Complicated: If it can be made simpler and just as effective, then by all means, please do so. If you can tell a more compelling and actionable story, do that as well. But ‘complicated’ just might mean, “we don’t understand it yet.”
Understand: Few people understand how the iphone works, or even the refrigerator. But that doesn’t mean we can’t effectively use it. The people who were moved by The Rite of Spring or Miles Davis or Esperanza Spalding might not have understood the music but it still succeeded.
People walk away when it’s not worth the effort to pay attention. People ignore innovation when the network effect is insufficient to overcome their fear. People rarely understand something the same way the creator does, but that’s okay.
Our first job is to do work that matters for people who care. It helps to follow that up with the scaffolding needed to cause cultural change, so the idea spreads.
But don’t dumb it down to reach people who don’t want to be reached in the first place.
Here We Go Again [Penny Arcade]
New Comic: Here We Go Again
Pluralistic: The cost of doing business (25 Mar 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

The most important part of any law, rule or policy isn't what it permits or prohibits – it's whether you can enforce the law at all.
After all, as odious as a law that forbids people from thinking mean thoughts about Trump would be, it would also be completely unenforceable, and would ultimately just not be very important, except as a symbol of Trump's evil.
This property is called "administrability," meaning, "the degree to which an authority can administer the policy." There are many dimensions to administrability, including "Is it even possible to detect whether this policy has been violated?" In that same vein, there're questions like, "If you discover someone has violated this policy, will you be able to stop them from continuing to do so?" For example, the US routinely indicts North Korean hackers, but unless those hackers visit a place that the US can inveigle into arresting and extraditing them, it's a mostly symbolic gesture:
One undertheorized aspect of administrability is "fact-intensivity"; that is, are there difficult, fact-intensive questions that need to be answered in order to determine whether someone has violated this policy?
Think of probate law: probate is often a lengthy and expensive process, especially if the deceased is "intestate" (has no will). To probate an estate, all the deceased's assets have to be cataloged and assessed, claims of heirs and inheritors have to be evaluated, etc, etc.
People spend a lot of time and money creating wills and family trusts largely to answer these questions when they're easiest to resolve (when you're still alive and can clearly express your preferences), because it's even more expensive and time-consuming to answer these questions when you're not around anymore to weigh in on them.
As complex and time-consuming as managing your estate can be, there's nothing wrong in theory with having a complicated, careful process in place for dealing with it. Taking care of your loved ones and disposing of your assets is something that's worth getting right, and people have all kinds of highly individual preferences for this that requires a lot of flexibility in the system. Making a system that's very customizable but also robust against fraud (or even honest mistakes) requires a lot of administrative superstructure to hold it all together.
And besides, probate isn't something we have to do very often. After all, most of us will only die one or fewer times. It's not like we have to figure this stuff out every day. It's the kind of thing you can do every couple of decades, over several hours, spread out over weeks.
Frequency, then, is the enemy of fact-intensivity. If you had to do probate-level form-filling to buy a cup of coffee or pay your electricity bill, that would be nuts. For one thing, it would be full employment for lawyers – and it would cost so much that by the time you got to the cafe or the gas-pump, you'd be too broke to actually complete the transaction.
This comes up a lot in discussions of tech policy, because once you computerize something, you can start to do it very quickly, which means that policies that added, say, a 1% admin overhead to a task before it was digitized can add up to a 1,000% overhead once it's digitized.
The best example of this is copyright: copyright is the most fact-intensive doctrine you deal with on a day to day basis. Technically, conclusively determining whether you have the right to forward an email could take a lawyer a whole day. Sure, most email forwarding is "fair use" (that is, it fits into one of copyright's "limitations and exceptions"), but any decent IP law prof could come up with ten email forwarding hypotheticals in ten minutes that could occupy a whole fourth-year IP law class for an entire semester.
One of the reasons copyright is so fact-intensive is that it was designed to be invoked infrequently. We're talking about a legal regime that was designed to answer questions about book and music publishing (and then adapted for other kinds of media), and even the most prolific publisher or label is going to deal with double-digits' worth of new works per season.
Meanwhile, the people working at that same publisher are likely forwarding hundreds, if not thousands of emails per day. If the publisher's copyright lawyers had to review every one of those forwards, they would never publish another book. They would go bankrupt.
Obviously, that's not how things work.
Why not, though?
Well, mostly because we just pretend copyright law isn't there. To the extent that we do acknowledge the potential for copyright liability from everyday activities that no one ever asks a lawyer to sign off on, we manage that liability through shitty, one-sided contracts. You have undoubtably clicked on dozens of agreements this year wherein you warranted that nothing you were doing violated copyright law (a neat trick, given that you probably have no idea whether any of the activities you routinely engage in could violate copyright) and further, you indemnified someone else for "all costs arising from any claims" associated with your activity.
That's an unbelievably shitty, one-sided clause for you to have "agreed" to, since "any claims" includes claims with no merit and "all costs" includes "money we paid someone who brought a bullshit claim to just go away."
In other words, you routinely click through these nonsense "agreements" where you promise to give every cent you have to anyone who wants it, if the company that made you click through that bullshit decides to promise some deranged rando a million bucks to settle their wild accusation that you violated their copyrights.
For complicated reasons, we're not all drowning in copyright lawsuits all the time, but if someone really wanted to fuck you up and they had deep enough pockets, they could use the fact that you're a giant, routine copyright infringer (just like everyone else) to wreck your life for years.
So obviously, it would have been better if we'd done some major refactoring of copyright law once the internet came along. My preferred fix? Carve out activities unrelated to the media industry's supply chain from copyright altogether:
https://pluralistic.net/2023/10/21/the-internets-original-sin/
Copyright isn't the only fact-intensive doctrine that's challenged by the cadence of digital life. The internet lets us do a lot of things, very quickly, meaning that even small factual questions pile up beyond any reasonable capacity to resolve them.
Take the debate over content moderation and hate speech. Hate speech and harassment online are serious problems and they disproportionately affect people who are getting the shitty end of the stick in the offline world, too. The legacy platforms obviously don't give a damn about these people, either.
So it's tempting to attempt to use policy to solve this real problem. Even if the US wasn't being run by a trollocracy, this would probably be a nonstarter in America, because hate speech is protected by the First Amendment, and purely speech-based harassment is hard to punish without falling afoul of 1A.
But other countries – notably the EU – are having a go at it. I think this is a doomed effort – but not because hate speech isn't a serious problem! Rather, because hate speech regulations are very fact intensive, and hate speech is very common. Frequency is the enemy of fact-intensivity.
Say the EU creates a rule requiring platforms to take reasonable measures to prevent hate speech. This requires
adjudicating whether a given user's speech rises to that definition; and
determining whether the platform's technical measures were "reasonable."
This is the work of months, if not years. And hate speech happens hundreds of times per minute on the big platforms. It's just not an administrable policy.
Now, just because policy isn't administrable, it doesn't follow that there's nothing to be done. There's other ways to give relief to the targets of harassment and hate speech. To get to those ways, we have to ask ourselves why people who are tormented by trolls stay on the platforms that expose them to abuse.
There are plenty of extremely wrong explanations for this floating around. One is that Mark Zuckerberg and Elon Musk are Cyber-Rasputins who can hypnotize us into using their platforms even if we don't like them, by "hacking our dopamine loops." This is a very silly explanation: everyone who's ever claimed to have perfected mind-control was a liar and/or deluded:
https://pluralistic.net/HowToDestroySurveillanceCapitalism
Another is that people are lying (possibly to themselves) when they say they don't like being harassed on legacy social media platforms. This theory – from neoclassical econ – is called "revealed preferences," and it holds that people whose actions go against their stated preferences are "revealing a preference" for the thing they're doing.
This is the sort of thing you end up believing in if you incur the kind of neurological injury that arises from pursuing an economics degree, which causes you to be incapable of reasoning about (or even perceiving) power. "Revealed preferences" tells you that if someone sells their kidney to pay the rent, they have a "revealed preference" for having one kidney.
Thankfully, there's a much simpler explanation for people's continued use of platforms where they are subject to abuse and harassment. It's this: the only thing worse than being a member of a disfavored minority who is subject to abuse and harassment is being a member of a disfavored minority who is subject to abuse and harassment who is also isolated from your community.
Leaving Facebook or Twitter means leaving behind the people who comfort and support you when you are subject to abuse. The more abuse and discrimination you face, the more that support matters, and the harder it is to leave that community behind. You love your community more than you hate Zuck or Musk, so you stay, because as much as you love them, it's transcendentally difficult to coordinate a mass departure for somewhere else. This is called the "collective action problem" and it's a regressive tax on the most abused platform users and communities.
This is a problem we can solve with policy! We can mandate that platforms support interoperability, so that when you leave a legacy platform like Twitter or Facebook for a modern platform like Mastodon or Bluesky, the messages addressed to you on the legacy platform are forwarded to your new home. That way you can have the people you love without the platform you hate.
This is a very administrable policy. The main lift is figuring out the nuts and bolts of interoperability, and while that's a big technical project, it's the kind of thing you only have to do once or twice. Then, if a platform fails in its duty to forward your messages after you leave, it's very easy for a regulator to determine whether it's violating the rules – they just have to send a message to your old account and see if it shows up for your new account:
https://pluralistic.net/2022/12/19/better-failure/#let-my-tweeters-go
A hate speech policy is hard to administer because it requires resolving a bunch of fact-intensive questions. A "right to exit" policy replaces all those fact-intensive questions with a bright line policy ("if you don't forward your former users' messages, you are guilty"), which can be administered at high speed.
Whenever a fact-intensive policy that regulates an infrequent activity fails because the activity becomes more frequent, you have two choices: you can either slow down the activity, or you can replace the fact-intensive questions with bright-line tests that can be resolved much more quickly.
But more often, we fail to do either, and everything goes very badly indeed.
That's more or less what's happened with "merger scrutiny," the part of antitrust law that lets competition regulators (or competitors) block or put conditions on mergers that involve large firms.
In these merger scrutiny cases, plaintiffs who challenge a merger are expected to resolve a bunch of extremely fact-intensive questions. Fail to resolve any of these questions and the merger goes ahead.
The most pernicious fact-intensive question that arises in antitrust cases is "market definition." That's pretty much what it sounds like: "What market is this company doing business in?" If you can prove that the companies in a proposed merger are in the same market, then it's a lot easier to prove that allowing the merger would reduce competition.
The problem is that "market" is a very slippery concept. As Tim Wu describes in his excellent book The Age of Extraction, "market definition" creates a near-infinite amount of wiggle-room:
https://www.wired.com/story/tim-wu-age-of-extraction/
When Wu was serving in the Obama FTC, he had a front-row seat for Google's acquisition of Waze. Now, obviously these companies are direct competitors, but the Obama administration wanted the merger to go through (it was dominated by people who thought monopolies are efficient and didn't want to do their jobs). So these officials decided that Google Maps' market was "finding out where you are" and that Waze's market was "getting you somewhere." It was really that stupid.
Writing for the Law and Political Economy project, Hal Singer explains how the fact-intensive nature of the "market definition" question makes it virtually impossible to prevent market concentration and abuse of dominance:
https://lpeproject.org/blog/the-market-definition-trap/
From Livenation/Ticketmaster to Paramount/Warner Brothers, the "market definition trap" leaves the public virtually defenseless before efforts to reorganize the economy into extractive, rapacious cartels.
In a recent interview with the Do Not Pass Go podcast, Paul Crampton (Canada's recently retired top competition judge) talks about the tsunami of mergers that Canada's Competition Bureau is expected to oversee:
https://www.donotpassgo.ca/p/inside-canadas-competition-court
Fact-intensive market definition questions can't possibly be resolved at the pace of mergers. That's because companies' preferred growth strategy is combining, rather than competing. There's plenty of political problems with merging Paramount and Warner, but there's also a huge economic problem, because these companies are direct competitors who will soon operate as a single firm.
The M&A industry has staged a denial of service attack on its regulators, accelerating the pace of mergers involving large firms far beyond the ability of a regulator to resolve the fact-intensive questions these mergers raise. They've flooded the zone, and after the mergers go through and the companies start abusing their customers, workers and competitors, these same market definition questions bedevil any attempt to rein in this abuse of dominance.
Singer makes some excellent suggestions for legal reforms to resolve this, moving some of the fact-intensive questions to bright-line ones, such as "whether the challenged conduct injured workers, consumers, or some other counterparty."
This is the right approach. As we plan for a future in which legislatures recognize the enormous harms that monopolization inflicted on our societies, we need to come up with more bright-line rules for antimonopoly rules. These will lack some of the subtlety that fact-intensive treatment affords, but you can't do fact-intensive adjudication for high frequency activities. So maybe we say that no company can acquire or merge with another company more than once in 18 months, or that companies that share more than 10% of their customers can't merge.
Some "good" mergers will fail these tests, but that's the price we pay. If you want to move mergers from a rare occurrence to an everyday, you're going to have to accept a loss of nuance in the rules for these mergers. The alternative is the ugly, self-destructive mess we have today.
(Image: Harrison Keely, CC BY 4.0; DocteurCosmos, CC BY 3.0; modified)

The one thing everyone gets wrong about feminism https://www.theguardian.com/world/2026/mar/15/feminism-isnt-dead-rebecca-solnit
#25yrsago Warner Bros v Potter fandom https://web.archive.org/web/20010331091849/http://www.potterwar.org.uk/home/index.html
#20yrsago Rant transcript from Game Developers’ Conference https://web.archive.org/web/20060404230422/http://crystaltips.typepad.com/wonderland/2006/03/gdc_game_develo.html
#20yrsago Union Pacific threatens to sue painters, model railroaders over trademark https://web.archive.org/web/20060413085045/https://www.trains.com/community/forum/topic.asp?page=-1&TOPIC_ID=60666&REPLY_ID=681783#681783
#20yrsago US frequent flier programs deliver less and less https://www.nytimes.com/2006/03/21/business/still-loyal-to-your-airline-you-must-be-looney-tunes.html
#20yrsago Mother Jones on IP overkill https://www.motherjones.com/politics/2006/03/intellectual-property-run-amok/
#20yrsago Comic advises women to call anti-abortion Senator to make their choices https://web.archive.org/web/20060321230542/http://minimumsecurity.net/toons2006/6034.htm
#20yrsago HOWTO become an early riser https://stevepavlina.com/blog/2005/05/how-to-become-an-early-riser/
#15yrsago Trademark thought experiment: when should intermediaries be cops? (Barista vs. Barbie) https://memex.craphound.com/2011/03/23/trademark-thought-experiment-when-should-intermediaries-be-cops-barista-vs-barbie/
#15yrsago New York Times advances weird, self-destructive trademark theory to prop up its paywall https://memex.craphound.com/2011/03/23/new-york-times-advances-weird-self-destructive-trademark-theory-to-prop-up-its-paywall/
#15yrsago LSE economists: file sharing isn’t killing music industry, but copyright enforcement will https://arstechnica.com/tech-policy/2011/03/is-file-sharing-the-global-future/
#15yrsago Anti-union group: send us secret, unlimited donations so we can bring transparency to politics! https://web.archive.org/web/20110325141411/https://www.wmc.org/MediaOutlet/display.cfm?ID=2485
#15yrsago Why Rebecca Black fascinates us, and why the mashups suck https://www.happyrobot.net/words/pony.asp?id=10233
#15yrsago Understanding the SSL security breach, preparing for the next one https://www.eff.org/deeplinks/2011/03/iranian-hackers-obtain-fraudulent-https
#10yrsago Airlines celebrate record profits, having killed bereavement fares https://www.latimes.com/business/la-fi-lazarus-20160322-column.html
#10yrsago Bake: homemade Jabba the Hutt peeps https://www.starwars.com/news/jabba-the-hutt-marshmallow-treats
#5yrsago Tories pass Grenfell costs onto tenants https://pluralistic.net/2021/03/23/parliament-of-landlords/#slow-motion-arson

Montreal: Bronfman Lecture (McGill), Apr 10
https://www.eventbrite.ca/e/artificial-intelligence-the-ultimate-disrupter-tickets-1982706623885
Montreal: Drawn and Quarterly, Apr 10
https://mtl.drawnandquarterly.com/events/4863920260410
London: Resisting Big Tech Empires (LSBU), Apr 25
https://www.tickettailor.com/events/globaljusticenow/2042691
Berlin: Re:publica, May 18-20
https://re-publica.com/de/news/rp26-sprecher-cory-doctorow
Berlin: Enshittification at Otherland Books, May 19
https://www.otherland-berlin.de/de/event-details/cory-doctorow.html
Hay-on-Wye: HowTheLightGetsIn, May 22-25
https://howthelightgetsin.org/festivals/hay/big-ideas-2
Launch for Cindy's Cohn's "Privacy's Defender" (City Lights)
https://www.youtube.com/watch?v=WuVCm2PUalU
Chicken Mating Harnesses (This Week in Tech)
https://twit.tv/shows/this-week-in-tech/episodes/1074
The Virtual Jewel Box (U Utah)
https://tanner.utah.edu/podcast/enshittification-cory-doctorow-matthew-potolsky/
Tanner Humanities Lecture (U Utah)
https://www.youtube.com/watch?v=i6Yf1nSyekI
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. First draft complete. Second draft underway.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
https://doctorow.medium.com/
https://twitter.com/doctorow
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Russell Coker: The Death of Twitter [Planet Debian]
At the end of last year I uninstalled the Twitter app on my phone.
In the past Twitter used to be very useful for providing feedback to large organisations. I had responses from supermarkets, chain restaurants, online stores, major computer companies, and even the IT department of a court. In recent times I have had less responses from corporations which significantly reduces the value of Twitter to me and to many other users. It seems that Elon’s management style has discouraged not only advertising but also all forms of corporate interaction. Messing up the check mark on accounts to make it harder to work out which is a real corporate
Since Elon bought it Twitter has been increasingly pushing conservative Tweets and has done little to stop bot accounts. The incidence of useful discussions has steadily decreased. I know people who have quit Twitter entirely due to opposition to Elon, I am not doing that. I finally decided to stop using Twitter in any serious way when the notifications on my phone about popular Tweets started only being about Tweets from conservative influencers and Elon. This was obviously not any algorithm based on Tweets I was liking, it was based on political decisions. I didn’t uninstall the app due to political disagreement, I uninstalled it because it was through deliberate design promoting material that any algorithm would know was something I wouldn’t either like or “like”.
I still announce new blog posts on Twitter for my 198 followers at the same time as announcing them on Mastodon and Facebook. I get the most reactions to such announcements on Mastodon, the second most on Facebook, and hardly any on Twitter. I’m wondering how long it will be worth announcing blog posts on Twitter or whether I should stop now.
I am sure that many other people are making similar decisions and this is going to affect Twitter overall.
The web site www.russellcoker.com has information on all the ways of following me.
John Goerzen: Artificial Intelligence: Shades of Gray [Planet Debian]
AI sure is a hot topic right now, and I see a lot of people arguing about it. To a lot of people around here, I’m the “computer person” they know and I get asked a lot about AI.
I’m going to suggest a lot of things can be true at once. For instance:
Or how about:
And:
I have sympathy for the naysayers; those that say it’s nothing but a stochastic parrot. But I don’t have a lot of sympathy for the naysayers that deny ever using it; you can’t form a credible argument against something without having an understanding of it informed by experience.
I also have sympathy for the cheerleaders. I have seen some impressive things from AI; for instance, a story from an engineer who has a child with a rare disease without a credible cure. The engineer did a lot of research on it, started feeding research papers into AI to analyze, and the AI started finding correlations between different areas of research that humans hadn’t yet found — leading to a positive result for the child.
To be fair, I have rarely seen an AI deliver a 100% correct answer on anything with any real level of complexity. I have seen it both waste more time than it saves, and save a ton of time.
My point here is: It is neither always fantastic nor always terrible.
Let me talk you through an example.
I am a fan of inbox zero for email. That is, the inbox should be empty. Unfortunately, mine has 8000 messages in it. According to the oldest messages in my inbox, I last had inbox zero 8 years ago. But really, only a handful are older than 2020. I guess something must have happened that year…
I’ve been chipping away at this for quite some time now. The problem is, there are certain emails in there that really do still need some action – maybe it’s photos to save off into our photo collection, for instance. But when looking at things sorted by date or thread, there are old shipping confirmations next to phishing attempts and family photos. One can’t just scan down the list.
I’ve tried all the usual tricks, most of which involve selecting groups of message that are easy to bulk erase, or at least easy to scan visually for the occasional thing worth saving. Sort by sender or subject line, for instance. Then I can, for instance, delete all the old messages from the shopping sites I commonly use all at once. But then they start using different senders and different subject lines and that doesn’t get all of them. I’ve tried keyword searches for this sort of thing too. Still, that got me down to about 8000 messages.
So I thought: why not see if an LLM could help me classify these? Maybe it could categorize them, and then I could look at emails grouped by category.
I have one machine with a discrete GPU, an Nvidia RTX 4070. It’s a desktop machine I don’t use all that often. But I set up Ollama on it, running in a Docker container. Ollama runs models locally.
I should also mention at this point that we are solar-powered, and this time of year is a time of peak production of excess solar, because it is sunny and not much heat or AC is required. So that machine is solar-powered and isn’t causing environmental harm. In any case, charging the EV uses much more power than that GPU.
I figured I would do this in two passes. First, ask the LLM to classify each message (or a sampling of them would probably work too), letting it pick its own categories for each. Then, look at the patterns that emerge and give it a single, much smaller, set of broad categories to use and rerun it over that.
Then I can easily select messages from my Maildirs by category and process them in bulk.
I used open-interpreter pointing to that GPU on my network to help me write the scripts for this. It didn’t get things right on its own; for instance, it didn’t call the Ollama API correctly, and insisted on appending “/cur” to the path to the Maildir (which was not going to fly with Python’s maildir module). It took roughly an hour to classify those 8000 messages (or, as I had it do, the first 2000 characters of them), and then the same to do it a second time. I had it output lines in the form of “filename\tcategory” and hand-wrote the shell script that processed those.
In the end, was it useful? Yes, quite. Its classifications weren’t perfect (and it didn’t even follow my prompt perfectly; sometimes it would give me a long discussion on why it picked a certain category rather than just that category, and occasionally it picked categories not on the list). But then, neither were my manual keyword searches. So far I’ve gotten rid of nearly 1000 more messages. Several categories were a “visual scan for sanity and then delete all” sort of thing.
My emails never left my network. I didn’t rely on a cloud AI to process them. I didn’t contribute to global warming (this may have even been a case of saving energy, since it no doubt will offset quite a bit of manual time that would keep screens and room lights energized and so forth). I used about as much energy as watching a movie on a TV.
Did it complete the task for me entirely autonomously? Also no. AI isn’t a mind reader and it can’t possibly evaluate exactly what my thought process would be for a given task. But it can do a decent enough job to save me some time.
Still, this didn’t require hyperscaler datacenters. AI even runs on-phone (Google Translate being one of the most useful AI-driven apps I’ve ever seen, and it can run on-device).
Girl Genius for Wednesday, March 25, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, March 25, 2026 has been posted.

a thousand beaks, a million talons, ten billion eyes. RIP Ms. Beakman, you beautiful bird
UK Politicians Continue to Miss the Point in Latest Social Media Ban Proposal [Deeplinks]
The UK is moving forward with its efforts to ban social
media for young people. Ahead of this week’s House of Lords
debate on the topic, we’re getting you situated with a primer
on what’s been happening and what it all
means.
On 9 March, the House of Commons discussed amendments tabled by the House of Lords in the government’s flagship legislation, the Children’s Wellbeing and Schools Bill.
The House of Lords previously tabled an amendment to “prevent children under the age of 16 from becoming or being users” of “all regulated user-to-user services,” to be implemented by “highly-effective age assurance measures,” which effectively banned under-16s from social media. When this proposal came before the House of Commons, MPs defeated it by 307 votes to 173.
Instead, the Commons proposed its own amendment: enabling the Secretary of State to introduce provisions “requiring providers of specified internet services” to prevent access by children, under age 18 rather than 16, to specified internet services or to specified features; and to restrict access by children to specified internet services which ministers provide.
The Commons proposal redirects power from the UK Parliament and the UK’s independent telecom regulator Ofcom to the Secretary of State for Science, Innovation and Technology, currently Liz Kendall, who will be able to restrict internet access for young people and determine what content is considered harmful…just because she can. The amendment also empowers the Secretary of State to limit VPN use for under 18s, as well as restrict access to addictive features and change the age of digital consent in the country; for example, preventing under-18s from playing games online after a certain time.
This process is devoid of checks or accountability mechanisms as ministers will not be required to demonstrate specific harms to young people, which essentially unravels years-long efforts by Ofcom to assess online services according to their risks. And given the moment the UK is currently in, such as refusing to protect trans and LGBTQ+ communities and flaming hostile and racist discourses, it is not unlikely that we’ll see ministers start restricting content that they ideologically or morally feel opposed to, rather than because the content is harmful based, as established by evidence and assessed pursuant to established human rights principles.
We know from other jurisdictions like the United States that legislation seeking to protect young people typically sweeps up a slew of broadly-defined topics. Some block access to websites that contain some “sexual material harmful to minors,” which has historically meant explicit sexual content. But some states are now defining the term more broadly so that “sexual material harmful to minors” could encompass anything like sex education; others simply list a variety of vaguely-defined harms. In either instance, this bill would enable ministers to target LGBTQ+ content online by pushing this behind an under-18s age gate, and this risk is especially clear given what we already know about platform content policies.
The internet is an essential resource for young people (and adults) to access information, explore community, and find themselves. Beyond being spaces where people can share funny videos and engage with enjoyable content, social media enables young people to engage with the world in a way that transcends their in-person realm, as well as find information they may not feel safe to access offline, such as about family abuse or their sexuality. In severing this connection to people and information by banning social media, politicians are forcing millions of young people into a dark and censored world.
The initial push to ban under-16s from social media came from the Conservative Party, who have since accused the UK’s Prime Minister Keir Starmer of “dither and delay” for not committing to the ban. The Liberal Democrats have also called this “not good enough.” The Labour Party itself is split, with 107 Labour Party MPs abstaining in the vote on the House of Lords amendment.
But we know that the issue of young people’s online safety is a polarizing topic that politicians have—and will continue to—weaponize for public support, regardless of their actual intentions. This is why we will continue to urge policymakers and regulators to protect people’s rights and freedoms online at all moments, and not just take the easy route for a quick boost in the polls.
The draft Children’s Wellbeing and Schools Bill that came from the Lords provided that any regulation pertaining to the well-being of young people on social media “must be treated as an enforceable requirement” with the Online Safety Act. The Commons amendment, however, starts out by inserting a new clause that amends the Online Safety Act.
For more than six years, we’ve been calling on the UK government to pass better legislation around regulating the internet, and when the Online Safety Act passed we continued to advocate for the rights of people on the internet—including young people—as Ofcom implemented the legislation. This has been a protracted effort by civil society groups, technologists, tech companies, and others participating in Ofcom's consultation process and urging the regulator to protect internet users in the UK.
The MPs amendment essentially rips this up. Technology Secretary Liz Kendall recently said that ministers intended to go further than the existing Online Safety Act because it was “never meant to be the end point, and we know parents still have serious concerns. That is why I am prepared to take further action.” But when this further action is empowering herself to make arbitrary decisions on content and access, and banning under-18s from social media, this causes much more harm than it solves.
Sadly, no. Calls to ban social media access for young people have gained traction since Australia became the first country in the world to enforce one back in December. On 5 March, Indonesia announced a ban on social media and other “high-risk” online platforms for users under 16. A few days later, new measures came into effect in Brazil that restricts social media access for under-16s, who must now have their accounts linked to a legal guardian. Other countries like Spain and the Philippines have this year announced plans to ban social media for under-16s, with legislation currently pending to implement this.
The Children's Wellbeing and Schools Bill returns to the House of Lords on 25 March for consideration of the new Commons amendments. The bill will only become law if both Houses agree to the final draft.
We will continue to stand up against these proposals—not only to young people’ free expression rights, but also to safeguard the free flow of information that is vital to a democratic society. The issue of online safety is not solved through technology alone, especially not through a ban, and young people deserve a more intentional approach to protecting their safety and privacy online, not this lazy strategy that causes more harm than it solves.
We encourage politicians in the UK to look into what is best, not what is easy, and explore less invasive approaches to protect all people from online harms.
Seattle Central College’s Wood Technology Center May Be on the Chopping Block [The Stranger]
Reached by phone on Tuesday, a spokesperson for the college said that while they couldn’t name specific properties they were considering selling, the college is currently looking at all of their properties. This includes the block that contains the historic Egyptian Theater. by Chase Hutchinson
Seattle Central College’s Wood Technology Center, the home to carpentry, boat-building, and pre-apprenticeship construction programs that train students for skilled trades, is at risk of closing as the college explores selling the building where it’s housed.
Reached by phone on Tuesday, a spokesperson for the college said that while they couldn’t name specific properties they were considering selling, the college is currently looking at all of their properties. This includes the block that contains the historic Egyptian Theater, which concluded operations under SIFF last October.
Multiple students and staff spoke to The Stranger and expressed concerns about the loss of the programs. These closures will impact a region that desperately needs them.
“Losing this for Seattle is a huge loss. It’s a huge loss for the local economy, it’s a huge loss for our industry,” says Catie Chaplan, a Seattle Central College Wood Technology instructor named 2017’s Instructor of the Year by the Washington Women in the Trades. “With the need for housing in Seattle, it’s a loss of one of the few places that trains carpenters to build houses.”
Staff and students say they learned of the potential closure from college leadership on Monday, including interim president Chantae Recasner. As reported by The Seattle Times, students protested outside a conference room where a meeting was taking place, wearing belts and toolbelts while chanting as administrators departed, hoping pressure would lead to a different outcome.
Much remains unknown. Staff say they intend to honor all currently enrolled students. Staff said they’ve been told that they could continue to enroll cohorts in the spring quarter. However, they could be prohibited from enrolling new students in the five-quarter program by fall. There are approximately 70 students on a program waitlist.
It’s important to staff to keep enrolling for as long as they can rather than have the building sit empty while awaiting a potential sale, staff say. More details about enrollment will come in the next week.
The Stranger asked about the looming closure, the financial health of the college, and whether instructors would be given more time to find a different solution. Barb Childs, Seattle Central College’s associate vice chancellor of public relations and strategic initiatives, sent the following statement:
“We are considering the sale of Seattle Colleges' properties, including Seattle Central's Wood Technology property, and relocating the programs, where applicable, to sister colleges. As we consider the sale of properties, we are seeking the most seamless and softest landing for our students and employees. We are exploring this decision due to structural funding challenges facing community colleges across our state, including declining state funding and rising operating costs.”
In addition to concerns about losing what they called “vital programs,” students and staff said the closure leaves fewer opportunities for unrepresented groups to break into the woodworking field.
“These programs are one-of-a-kind programs that provide access and equity in the trades. They’re the only programs of their kind in Seattle and in the vicinity,” says Chaplan. “My program right now is over 50 percent women. We have a lot of queer, nonbinary, trans students. … We have people from all walks of life coming here to get training and build confidence to get living wage jobs and careers in industries that are desperate for skilled workers.”
Stephan Anderson is one of those trans students. The possibility of cuts has haunted the building, they say. The loss would be significant for Anderson.
“As a trans person of color at this school, being supported and gassed up every day has been unforgettable,” they say. “I’ve never experienced an education like this.”
Chaplan argues more grants and partnerships could allow the program to continue. It’s happened before. The over-80-year-old institution received a $750,000 grant from the Lowe’s Foundation in 2024.
“To lose the campus and lose the property is a huge loss that, in my opinion and our opinion here, is really a short-sighted loss,” Chaplan said. “We understand there’s a budget crisis and community colleges are in a world of hurt, but the years of financial decisions that got us here shouldn’t be balanced on selling an irreplaceable campus.”
Urgent: No funding for Iran war [Richard Stallman's Political Notes]
US citizens: call on Congress to reject the $200 billion funding request for the war with Iran.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Unwanted pro-war propaganda [Richard Stallman's Political Notes]
US citizens: call on Congress to investigate FCC Chairman Carr's threats to silence news media that report on the Iran war without slanting it to favor the war-starter.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Families, child care unfunded [Richard Stallman's Political Notes]
US citizens: call on your federal legislators to stop the bully's attack on child care and families.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: No Kings [Richard Stallman's Political Notes]
On March 28, or a date close to that, join one of the No Kings protests.
Got problems? Yes, you do! Email your question for the column to mailbox@savage.love! by Dan Savage I’m a happily married pregnant woman. My wife and I have had a bit of a slowdown in the sex department, but nothing too worrying considering my “condition.” During this pregnancy I’ve had an increase in libido, but I haven’t shared that with her. We were having some conflict when I started to experience this uptick in sexual impulses. I’ve had some limitations physically, like a period of mandated pelvic rest, so “The Right Moment” has been rare. When our dry spell came up a few months ago, neither of us handled the discussion well. I was being flirtatious (or I thought) and she chose that moment to say something hurtful about how infrequently we were having sex. I don’t like feeling as though sex is an obligation, so that interaction was a big turn-off for me. I told her I felt hurt, and she apologized, but I don’t think…
[ Read more ]
Democrats could have been [Scripting News]
Democrats could run an ad that would give an estimate of how much work you'd have to do to vote if the Republican plan passes.
And roughly how many people are like you and how likely they are to vote Democratic.
People can understand March Madness, they can understand this. You have to help though. The first question could be:
The first question could be:
In the ad we could also estimate what the probable makeup of Congress would be if the law passed.
And keep an open mind, it's possible this move could backfire on the Republicans. Who knows how people will vote after this kind of madness becomes law.
They might want to keep things as they are.
Mozilla could have been [Scripting News]
I’ve watched Mozilla not get it for what feels like decades.
Their only legit function imho is to make the real actual web be a great platform for independent developers.
For that, start by adding user controlled storage to the web, a few standard formats, and let app devs take it from there.
Nicole Ozer Named as Electronic Frontier Foundation’s Executive Director [Deeplinks]
SAN FRANCISCO – Nicole Ozer has been appointed as executive director of the Electronic Frontier Foundation effective June 1.
Ozer is a legal expert on privacy and surveillance, artificial intelligence, and digital speech. She currently serves as the inaugural executive director of the Center for Constitutional Democracy at the University of California College of the Law in San Francisco. From 2004-2025, she was founding director of the Technology and Civil Liberties Program at the American Civil Liberties Union of Northern California. Ozer will succeed Cindy Cohn, who has been with EFF for more than 25 years and served as its executive director since 2015.
EFF champions user privacy, free expression, and innovation through impact litigation, policy analysis, grassroots activism, and technology development, with a mission to ensure that technology supports freedom, justice, and innovation for all people of the world. The organization celebrated its 35th anniversary in 2025.

"I am honored to lead EFF forward in these critical times. EFF’s global work to defend and advance rights, justice, and democracy in the digital age is fundamental to the future of our countries, our livelihoods, and literally our lives,” Ozer said. “I am ready to hit the ground running with EFF’s exceptional staff, board, and broad base of supporters and ensure that EFF is stronger than ever. Together, we can meet this moment and build a future where technology works for the people.”
“I couldn’t be happier to pass EFF’s reins over to Nicole,” Cohn said. “She has been our stalwart partner for many years in standing up for privacy, free speech and innovation online. I’m confident that she understands both the strong heart and the future potential of EFF especially as our work is more critical than ever.”
“Nicole Ozer is the ideal person to lead EFF during this unprecedented time in our nation’s history,” said EFF Board Chair Gigi Sohn. “She possesses all of the qualities necessary to lead the organization: great vision, strong management skills and deep substantive knowledge. The fact that she has worked alongside EFF for over two decades is icing on the cake. The EFF Board is excited to welcome Nicole and begin a new chapter in our history.”
Over her more than two decades leading public interest technology work, Ozer:
Ozer is a lecturer at the University of California, Berkeley School of Law; was a 2024-2025 technology and human rights fellow with the Carr-Ryan Center for Human Rights Policy at the Harvard Kennedy School; and in 2019 was a visiting researcher at the Berkeley Center for Law and Technology and a non-residential fellow with the Digital Civil Society Lab at the Stanford Center on Philanthropy and Civil Society.
Ozer's work has earned accolades including the Fearless Advocate Award from the American Constitution Society Bay Area, the James Madison Freedom of Information Award from the Society of Professional Journalists of Northern California, and a 2025 California Senate Members resolution commending her “unwavering dedication to defending and promoting civil liberties in the digital world.” Her writings on privacy and constitutional law have been published widely, and she regularly provides expert testimony for government proceedings, offers commentary in the press, speaks at academic conferences, and presents at national and global forums including South by Southwest and the Centre for European Policy Studies. She holds a law degree from the University of California, Berkeley School of Law and a bachelor’s in American Studies from Amherst College.
"It is incredibly exciting to welcome Nicole Ozer as our new leader at EFF at a time when the organization's mission couldn't be more essential,” said entrepreneur, activist, writer, and EFF Board member Anil Dash. "Nicole's unique skills promise to build on the foundation that Cindy Cohn established as Executive Director, preparing EFF to serve an even more vital role in protecting privacy and innovation."
Cohn first became involved with EFF in 1993 when EFF asked her to serve as the outside lead attorney in Bernstein v. Dept. of Justice, the successful First Amendment challenge to the U.S. export restrictions on cryptography. She served as EFF’s legal director and general counsel from 2000 through 2015, and as executive director since then. She also co-hosted EFF’s award-winning “How to Fix the Internet” podcast. Her memoir, Privacy’s Defender: My Thirty-Year Fight Against Digital Surveillance, was published March 10 by MIT Press, and she is now conducting a national book tour.
EFF's Board of Directors last year assembled a committee
which undertook a wide search for Cohn’s successor with
assistance from leadership advisory firm Russell Reynolds
Associates.
Contact: press@eff.org
Windows 95 defenses against installers that overwrite a file with an older version [The Old New Thing]
Back in the days of 16-bit Windows, many system components were redistributable, meaning that programs that used those components could include a copy of those system components and install them onto the system as part of the program’s installer. The guidance for installing the system components was that if the installer finds a copy of the system component already on the system, then they should compare the version number of the existing file with the version number of the file being installed and then overwrite the file only if the file being installed has a higher version number. if the existing file has a higher version number, then it should be left alone.
This rule relies on the fact that Windows maintains backward compatibility, so the newer version still works even if used by an older program.
This doesn’t mean that installers actually followed this guidance.
It was common for program installers to overwrite any file that was in their way, regardless of the existing file’s version number. When these installers ran on Windows 95, the replaced the Windows 95 versions of the components with the Windows 3.1 versions. You can imagine how much of a disaster this caused to the rest of the system.
Windows 95 worked around this by keeping a backup copy of commonly-overwritten files in a hidden C:\Windows\SYSBCKUP directory. Whenever an installer finished, Windows went and checked whether any of these commonly-overwritten files had indeed been overwritten. If so, and the replacement has a higher version number than the one in the SYSBCKUP directory, then the replacement was copied into the SYSBCKUP directory for safekeeping. Conversely, if the replacement has a lower version number than the one in the SYSBCKUP directory, then the copy from SYSBCKUP was copied on top of the rogue replacement.
Basically, Windows 95 waited for each installer to finish, and then went back and checked its work, fixing any mistakes that the installer made.
An earlier design simply blocked the installer’s attempt to overwrite the file, but this ended up creating more problems. Some installers declared the installation to be a failure and gave up. Otherwise displayed an error message to the user and asked the user what to do next. (Like the user knows what to do next.) You even had installers that took even more extreme measures and said, “Okay, fine, I can’t overwrite the file, so I’m going to reboot the system and then overwrite the file from a batch file, see if you can stop me.”
Redirecting the write to a dummy file didn’t work because some installers had a validation step where they checked that the files on disk have the correct checksum, so they would notice that their attempt to overwrite the file was unsuccessful and error out.
The way that worked best was to let the installer overwrite anything it wanted and then go back and try to clean up the mess.
Bonus chatter: Some components addressed this problem by providing their own installer for the component, and telling installers, “You are not allowed to install these component file directly. Instead, you must run our custom installer. Yes, this disrupts your installer’s UI, but you installer authors have shown that you can’t be trusted to install files on your own. It’s your own fault.”
The post Windows 95 defenses against installers that overwrite a file with an older version appeared first on The Old New Thing.
Letters Pray – DORK TOWER 23.03.26 [Dork Tower]
Most DORK TOWER strips are now available as signed,
high-quality prints, from just $25! CLICK
HERE to find out more!
HEY! Want to help keep DORK TOWER going? Then consider joining the DORK TOWER Patreon and ENLIST IN THE ARMY OF DORKNESS TODAY! (We have COOKIES!) (And SWAG!) (And GRATITUDE!)
Firefox 149.0 released [LWN.net]
Version 149.0 of the Firefox web browser has been released. Notable features in this release include a new split-view feature for viewing two web pages side-by-side, a built-in VPN for browser traffic only, and more.
The Big Idea: Tiffani Angus & Val Nolan [Whatever]

You know ’em, you love ’em, authors Tiffani Angus and Val Nolan are back again with another installment of their speculative fiction guidebooks. Hop on board the Big Idea to see how they’ve done it again in Spec Fic for Newbies Vol. 3: A Beginner’s Guide to Writing Even More Subgenres of Science Fiction, Fantasy, and Horror.
TIFFANI ANGUS & VAL NOLAN:
Imagine a classic scene: A car driving down a lonely rural road… a bright light overhead… an examination table aboard an alien spacecraft… and then, instead of the typical medical business, our protagonist—let’s call her Sally—finds herself sitting across from an extraterrestrial. This being communicates with a curious thought-to-text translator device it places on the table. When the entity speaks, its words appear in the air between them:
“My species has learned all we can about your physiology. Now we wish to know about your culture. Does your society… tell stories?”
Sally, who’s been studying Creative Writing, is only too happy to discuss this. “We sure do,” she says. “Lots of different kinds! Science Fiction stories, Fantasy, Horror. And they take all sorts of different forms, like written fiction, TV shows, comics books…”
The alien’s already wide eyes expand even further. “And your species just instinctively understands how to tell these stories?”
“I mean, kinda. We’ve been doing it since we sat around campfires in the Ice Age. But we benefit from practice, you know? Plus, it helps to have guidance from enthusiastic instructors. Not literary snobs who want to make everyone write the same way as them but people sympathetic to the kinds of stories you want to tell.”
“And does one need to go to a school or university for this?”
“Not necessarily. Some people who’ve taught Creative Writing at universities have written books about it.” Sally looks around, finds her backpack (which conveniently materialized beside her), and pulls out a copy of Spec Fic for Newbies Vol. 3: A Beginner’s Guide to Writing Even More Subgenres of Science Fiction, Fantasy, and Horror by Tiffani Angus and Val Nolan. “This, for example, helps novice scribblers and even more seasoned writers learn how to write thirty different subgenres and major tropes. It gives deep dives into the history and development of each subgenre or trope, offers spotter’s guides to their typical manifestations, and provides writing exercises to get you started. Plus, it’s all based on real classroom experience!”
“Subgenres…” The alien’s word floats in the air. “We have heard of these. So many to keep track of.”
Sally thinks about this for a moment. She reaches for the translator. “Can I…?”
The alien nods.
Sally quickly finds the translator’s settings and alters a couple of font choices. “There,” she says, returning the device, “I’ve set it so that when I mention a subgenre that’s in Spec Fic 3, it will appear in bold. That’s what they do in the book. Like all this”—she gestures around the silver room—“is a recognizable Alien Abduction narrative. But the book covers everything from Dinosaur Tales to Swashbuckling Fantasy to Fungal Horror to Superheroes.”
“Fascinating.” The alien considers the book. “I wish I’d been able to study this.”
“They don’t teach Creative Writing at Space Academies?”
“Our universities mostly produce Mad Scientists,” the alien says. “Oh!” It points at the bolded word. “It did the thing!”
Sally smiles. “It’s fun, isn’t it? Plus, when Angus and Nolan discuss subgenres in the other volumes of the series, they underline its name so you can track it down easily.”
“Yes.” The alien turns Spec Fic for Newbies over in its spindly fingers. “I was wondering: can I just jump in with this third volume?”
“Oh absolutely! They’re all stand-alone books. Though if you want to know more about the previous ones…” She takes out her phone. “Have you got wi-fi here? Like, space wi-fi?”
The alien turns the translator upside down and shows her the password.
“Okay, cool,” Sally says, logging on. “So, Angus and Nolan have written about the previous volumes on Scalzi’s blog. You can read about Volume One here and Volume Two here.” She passes her phone to the alien, who reads the blog posts with interest.
“And people find these guides useful?” it asks.
“Useful and enjoyable,” Sally says. “The first two volumes were included on the Locus Recommended Reading List and shortlisted for the British Science Fiction Association Awards and British Fantasy Awards. Those are, like, big deals on our planet.”
“The section on Magic Schools and Dark Academia sounds interesting,” says the alien, now looking through the table of contents. “As does the section about Magical Realism.”
“I like some of the horror stuff myself,” Sally says. “I’ve lately given a go to writing about Near Death Experiences and Urban Gothic and Weird Fiction.”
“And?”
“And I’ve been trying lots of things that I never thought I’d try. The book is really encouraging that way. Angus and Nolan don’t believe in gatekeeping. The whole ethos of Spec Fic for Newbies revolves around bringing people into the realms of Science Fiction, Fantasy, and Horror by giving them the tools to explore these really rich and rewarding imaginary worlds.”
“I see there’s lots of jokes, too,” the alien says, the translator registering its chuckles as a series of curious emojis.
Sally makes an affirmative noise. “Yeah, the authors have a really snarky sense of humor. Angus and Nolan don’t take themselves too seriously, which is another thing that separates this book from the really dry, old-school academic writing guides. Though, of course, that doesn’t mean the book isn’t smart—”
The alien holds up the section on End of the Universe stories. “I can see that.”
“—but it does mean it’s approachable. Anyone can read Spec Fic for Newbies. Anyone can learn from this book. That’s their big idea!”
“Bugs!!!” the alien suddenly shouts.
“Where?!”
“Page 229!”
Sally laughs. “I haven’t got to that part yet!”
“This book tells us much about humanity,” the alien says, “as well as things about Elves and Kaiju.”
“And we’ve barely even covered half of the subgenres here!”
The alien returns the book to Sally. “Where can I get my own copy?”
“Direct from Luna Press.” She opens up the website. “Or from any of your usual retailers.”
“I think I would like to beam down and pick one up right away!”
“Great,” says Sally, “let’s go get you writing!”
Spec Fic For Newbies Vol. 3: Amazon|Barnes & Noble|Amazon UK|Blackstone UK|Waterstones UK
Author socials: Tiffani’s Website|Val’s Website|Tiffani’s Bluesky|Vals’ Bluesky
Slog AM: ICE Is in the Airports, a Meddlin’ Saudi Prince, Snowpack Pays for Warm Winter [The Stranger]
The Stranger's morning news roundup. by Vivian McCall
Fartin’ Around: The ICE agents sent to supposedly help TSA manage snarling lines at 14 airports—hundreds of its officers have quit or called out sick because they’re not being paid during this partial government shutdown—are just … standing around and pissing people off, writes Defector. Unsurprisingly, airport wait times haven’t magically improved overnight.
This Guy Is Definitely Going to Figure It Out: The Senate confirmed Markwayne Mullin to lead homeland security on a largely party-line vote Monday. The Republican Senator from Oklahoma and friend to President Donald Trump replacing Kristi Noem says his goal is to get the department off the front page of the news.
ICE in the News 2: ProPublica reports that Trump has arrested and detained the parents of at least 11,000 US citizen kids in the first seven months of his second term. That’s affecting roughly 50 kids a day; if the administration held that pace, the number would be about 22,000 by now.
ICE in the News 3: KUOW interviewed a couple from Oaxaca who’ve spent their adult lives working the crop and flower fields in the Skagit Valley. Their employer tells them they’re protected from federal agents at work, but there is no protection when they come and go. “Their kids beg them to leave their apartment — to walk to the nearby park and play on the playground, to go shopping for new shoes, or drive across town to get ice cream. These days, their mom and dad, who are undocumented, always say no.”
ICYMI, More ICE in the News: Last week, the Urbanist wrote about a “powerful surge” of immigration enforcement in Washington between October and December 2025. According to a report from University of Washington’s Center for Human Rights, the largest increases were in King, Yakima, and Clark Counties. The Center found repeated instances of federal agents running license plates to check immigration status before making an arrest.
Republican Sheriff/California Gubernatorial Candidate Seizes 650,000 Ballots from 2025: Riverside County Sheriff/candidate Chad Bianco says a citizen “audit” of California’s special election to re-district California allegedly showed that election workers counted 45,000 fewer ballots than the number of votes certified to the state. So… no. The citizen “evidence” is imprecise and wrong, and even though Bianco has been “investigating” fraud in Riverside County since 2022, he hasn’t found it. Is the stolen election in the room with us, folks?
Stop, Mr. Prince, He’s Impressionable! Saudi Arabian Prince Mohammed bin Salman has been pushing Trump to continue the war in Iran because he believes it is a “historic opportunity” to remake the Middle East, reports The New York Times. He’s told Trump that he must destroy Iran’s government. Trump appears to be of two minds (or none at all). Some days the war is ramping up. Others it’s winding down.
WFH is Dying: By July 1, all Seattle Public Schools employees must return to full-time in-person work, according to a Thursday email to employees. At least 330 SPS employees work in hybrid or fully-remote jobs.
Eina Kwon Shooting Won’t Go to Trial: Prosecutors have accepted a plea of insanity from Cordell Goosby, who, according to court filings, was in severe psychosis when he shot into the pregnant Kwon’s car in 2023, killing her and injuring her husband. After Goosby’s attorneys suggested he was insane at the time of the crime, prosecutors sought independent evaluation. Their expert agreed that he was insane. Under the plea, he could be held at a state psychiatric hospital for life.
Beautiful, Unseasonable Weather We’ve Been Having: This month’s snowy surprise was no match for climate change. Sorry to remind you of The End, but that abnormally mild winter cost us our precious snowpack. Usually at its highest point this time of year, Washington’s mountaintops currently “sit at or below half their normal levels,” writes The Seattle Times. After a brief hope for more snow, scientists, or the groundhogs of climate, are back to predicting the fourth severe summer drought in a row.
The Monster We’ve Created: His enjoyment is sickening.
Weather: It’s wet and grey, but we should be thankful for rain while it's still with us.
The Golden Hour at Roquette [The Stranger]
Roquette's Hour is a luminous treat. by Meg van Huygen
With an hour to kill before my birthday party, I was walking around Belltown in my silly dress in the freezing rain. I rarely drink alone, but…maybe that’s the move here? To celebrate myself on a date with myself?
It’s not hard to figure out how to spend the most luxurious possible solo hour in Belltown. Despite the attention it gets from both national food media and snobby listicle sites, Roquette’s somehow maintained a real-ones-know reputation in this city. Surrounded by oontzy dance clubs and yelly sports bars, this sleek, French-inspired cocktail lounge frequently sails under even my own radar, and definitely others’. A shame, considering its cool combo of elegant and chummy—Roquette’s unlikely to disappoint anyone who visits, even unreal ones who do not know.
What a perfect secret hideaway for an intimate little date with yourself, though. Self, we really must do this.
Fresh off its second James Beard nom, Roquette is standing room only on a blustery Friday. Ah, it’s so pretty and plush inside, with its cobalt velvet and palmy murals. They’ve got an ensemble cast tonight: Kyton Blair from Roquette’s original 2019 opening team—who’s also the StarChefs Seattle 2025 Rising Stars Award winner for his work there—as well as Chelsea Mathews (The Doctor’s Office) and Parker “Top Shelf” Knowles (Oyster Cellar). All major players in Seattle’s beverage programs.
From Roquette’s book of spectacular, world-class cocktails, I choose a Golden Hour: George Dickel Rye, Calvados Coquerel, Amaro Nonino, Giffard Piment d’Espelette, and apricot. The name was like a lovely personal welcome; in my wet scarf and drippy hair, I thought a sunny-golden hour spent in here just might break through the winter chill.
I like to smell the fruit before I take a sip—here, a swath of orange peel—and doing this adds enormously to the experience. Always a fan of gingerbready Dickel Rye. Calvados Coquerel is from Normandy, an oak-barrel cider brandy with farmy notes. Amaro Nonino is Italian and reminds me of MarketSpice tea: orange, cinnamon, chamomile, thyme, with a fruity grappa base. Also French, Piment d’Espelette’s a spicy, intense liqueur made by macerating espelette peppers in rhum agricole. And the sweet zang of the apricot juice unites everything, like hot honey on an experimental pizza.
This cocktail has always known me and is, in fact, my date tonight. We understand each other. We’re in love.
Before I go, Mathews sends me a Disco Ball—green AND yellow Chartreuse, mezcal, and “sparkles,” served in a disco ball-shaped shot glass. She’s “made it skate” with floaty ice slivers. In comparison, this tiny drink’s a flamboyant stranger who doesn’t know me at all, and it’s dazzling. I want a big version.
The karaoke party later is chaotic and fun, if exhausting, and I feel celebrated. It’s a privilege. But when the day is over, I’m deeply thankful for my meditative golden hour with the Golden Hour beforehand, hidden in plain sight at a svelte little lounge. This is the frequency I want this year. Age 46: I totally hang out at Roquette all the time now.
Leave Tyrants in the Ground [George Monbiot]
By unhooking ourselves from fossil fuels, we release ourselves from a world of harm.
By George Monbiot, published in the Guardian 19th March 2026
I realise this is a serious breach of etiquette. But could we perhaps abandon good manners and contextualise Donald Trump’s attack on Iran? The intense western interest in the Middle East and west and central Asia, sustained for more than a century, and the endless attempts by foreign governments to shape and control these regions, are not random political tics. They are somewhat connected to certain fuel sources situated beneath the ground.
Trump’s war aims are typically incoherent: apparently incomprehensible even to himself. But Iran would not be treated as an “enemy of the west” were it not for what happened in 1953, when Winston Churchill’s government persuaded the CIA to launch a coup against the popular democratic government of Mohammad Mossadegh. The UK did so because Mossadegh sought to nationalise the Anglo-Iranian Oil Company: to stop a foreign power from stealing the nation’s wealth. The US, with UK support, tried twice to overthrow him, and succeeded on the second attempt, with the help of some opportunistic ayatollahs. It reinstated the shah, Mohammad Reza Pahlavi. In 1954, the Anglo-Iranian Oil Company became British Petroleum, later BP.
Fury about the 1953 coup, combined with ever-more vicious repression under the shah’s dictatorship, triggered the revolution of 1979, which was captured by the ayatollahs, with horrible consequences for many Iranians. They would not be running the country were it not for our governments’ violent crushing of democracy for the sake of oil.
Take a step back from this history, and you see something else that should be obvious. The conflation of capitalism with “free markets” is one of the most successful lies in human history. The historical and ongoing plunder of resources; the police, armies and death squads deployed against those who resist; the shifting of profits from less powerful nations to the major powers; the intimidation of labour; the conning of consumers; the extraction of rent; the dumping of costs on the living planet: all this is the opposite of “free”. It’s highly coercive and extremely expensive.
Much of the time there’s little sign of a market, either. Land, commodities and labour are, in many cases, simply stolen. Public resources, whether oil reserves, forests, water systems or railways are given (or sold at a fraction of their value) to private monopolists. The rich are bailed out by the state when they run into trouble, while the poor must sink or swim. “Free market capitalism” is a contradiction in terms.
The world’s military power exists in large part to deliver the profit from resources – especially oil – to banks and shareholders, commodity traders and asset managers, hedge funds and private equity companies. For the same purpose, the infrastructure of persuasion – lobbyists, media, social media algorithms – is mobilised to ensure the most amoral, sadistic and bellicose people are selected as leaders, as they will keep oil and other commodities flowing for the benefit of capital, whatever the human cost may be. Their opponents are demonised, alternatives dismissed as “unrealistic”, “unpopular” and “unaffordable”.
This is why we consistently underestimate other people’s desire for change. For example, one study shows that 89% of the world’s people want more action to stop climate breakdown. Yet the same people believe they’re a minority. At the height of the Covid-19 pandemic, surveys consistently showed that a vast majority hoped to emerge into a better world, where health, wellbeing and environmental protection took precedence over economic growth. But governments spent billions on restoring our dysfunctions.
As the hydrocarbon industries and their financial backers find themselves threatened by green technologies, their grip on governments and the media has tightened. They’ve poured vast sums into climate denial and public dissuasion campaigns. Politics has become harsher, less open and less tolerant. The democratic recession is in large part driven by fossil fuel interests. The entire planet suffers from the resource curse.
Oil did not cause capitalism, but it has massively extended and empowered it. Reduce our dependency on oil, and we disrupt some of the world’s most violent and exploitative relations. We defuel dictators and war machines, coups and assassinations, invasions and nuclear threats. It’s not everything of course: there will still be water wars, land wars and mineral wars to be fought: after all, the military machine can’t just sit there rusting. But it’s a lot.
We would also defuel the greatest violence human beings have ever waged against each other: the degradation of all our lives through climate breakdown. The two emergencies – political and environmental – are one. We need to put ourselves on an anti-war footing with the urgency that nations have traditionally put themselves on war footings: an emergency programme to get fossil fuels out of our lives, faster and further than any government is currently planning.
A crucial intervention is the National Emergency Briefing, whose forthcoming film, hosted in cinemas by volunteers across the country, will press the government to explain our predicament properly, and mobilise for full-scale action. If you worry about the cost, consider this. The government’s Climate Change Committee estimates that the additional expense of a single fossil-fuel price spike on the scale of 2022’s is roughly the same as the entire cost of net zero by 2050. The price shock caused by Trump’s attack on Iran is likely to be even greater. We get nothing in return for oil spikes, but we get a new, more secure and cheaper energy system in return for the net zero programme.
I don’t mean to suggest that defeating the fossil fuel machine is easy. Capital will use everything it has to stop us. This is what Extinction Rebellion discovered in the UK, as vicious new protest laws were drafted to shut it down. This is what the Standing Rock campaigners in the US found, when they sought to stop an oil pipeline from crossing their land. It’s what Earth defenders in the global south discover even more brutally, as paramilitaries gun them down. Control over resources is the driving force of politics. Democracy, at the moment, is the lightshow played on the castle walls.
Concentrated fossil power leads to concentrated political power. Had we been less dependent on fossil fuels, there might have been no President Trump, no President Putin, no ayatollahs, no Prime Minister Netanyahu. Fossil fuels push the world towards autocracy. Overthrow our demand for them, and we overthrow much of the current tyranny. Greener, cleaner, cheaper, kinder, fairer: what a beautiful world we could have.
www.monbiot.com
Memory lane for Frontier users [Scripting News]
I had to find out which domains being served by a problem server were still mapping to its domain. This server had been running for six years, and I was pretty sure some of the apps had moved.
So I wrote a script in Frontier, it was the best tool available to me, and got my answer in 20 minutes, code written from scratch.
The script visited each subfolder, the filename is the domain of the folder, finds out which server it's supposed to be running on, based on a DNS lookup, and adds a line to a list.
Here's a screen shot of the domains folder.
Here's the script as a screen shot and GitHub doc.
This is just a way to preserve a little of the Frontier culture. Hard to explain in words. Easier to show as screen shots.
[$] A PHP license change is imminent [LWN.net]
PHP's licensing has been a source of confusion for some time. The project is, currently, using two licenses that cover different parts of the code base: PHP v3.01 for the bulk of the code and Zend v2.0 for code in the Zend directory. Much has changed since the project settled on those licenses in 2006, and the need for custom licensing seems to have passed. An effort to simplify PHP's licensing, led by Ben Ramsey, is underway; if successful, the existing licenses will be deprecated and replaced by the BSD three-clause license. The PHP community is now voting on the license update RFC through April 4, 2026.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| a bag of four grapes | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Ansible | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Bad Science | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Black Doggerel | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Blog - Official site of Stephen Fry | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Charlie Brooker | The Guardian | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Charlie's Diary | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Chasing the Sunset - Comics Only | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Coding Horror | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| Cory Doctorow's craphound.com | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Cory Doctorow, Author at Boing Boing | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Ctrl+Alt+Del Comic | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Cyberunions | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| David Mitchell | The Guardian | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Deeplinks | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| Diesel Sweeties webcomic by rstevens | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Dilbert | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Dork Tower | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Economics from the Top Down | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| EFF Action Center | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Enspiral Tales - Medium | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Events | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Falkvinge on Liberty | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Flipside | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Flipside | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Free software jobs | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Full Frontal Nerdity by Aaron Williams | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| General Protection Fault: Comic Updates | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| George Monbiot | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Girl Genius | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Groklaw | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Grrl Power | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Hackney Anarchist Group | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Hackney Solidarity Network | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| http://blog.llvm.org/feeds/posts/default | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| http://feed43.com/3874015735218037.xml | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| http://fulltextrssfeed.com/ | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| http://london.indymedia.org/articles.rss | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| http://planet.gridpp.ac.uk/atom.xml | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| http://shirky.com/weblog/feed/atom/ | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| http://thecommune.co.uk/feed/ | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| http://theness.com/roguesgallery/feed/ | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| http://www.baen.com/baenebooks | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| http://www.feedsapi.com/makefulltextfeed.php?url=http%3A%2F%2Fwww.somethingpositive.net%2Fsp.xml&what=auto&key=&max=7&links=preserve&exc=&privacy=I+accept | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| http://www.godhatesastronauts.com/feed/ | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| http://www.tinycat.co.uk/feed/ | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| https://broodhollow.krisstraub.comfeed/ | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| https://debian-administration.org/atom.xml | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| https://elitetheatre.org/ | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| https://feeds.feedburner.com/Starslip | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| https://hackbloc.org/rss.xml | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| https://philfoglio.livejournal.com/data/atom/ | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| https://propertyistheft.wordpress.com/feed/ | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| https://requiem.seraph-inn.com/updates.rss | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| https://thecommandline.net/feed/ | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| https://torrentfreak.com/subscriptions/ | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| https://web.randi.org/?format=feed&type=rss | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| https://www.dcscience.net/feed/medium.co | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| https://www.loomio.com/blog/feed/ | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| https://www.rightmove.co.uk/rss/property-for-sale/find.html?locationIdentifier=REGION^876&maxPrice=240000&minBedrooms=2&displayPropertyType=houses&oldDisplayPropertyType=houses&primaryDisplayPropertyType=houses&oldPrimaryDisplayPropertyType=houses&numberOfPropertiesPerPage=24 | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Humble Bundle Blog | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| I, Cringely | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Irregular Webcomic! | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Joel on Software | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| Judith Proctor's Journal | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Krebs on Security | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Lambda the Ultimate - Programming Languages Weblog | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Looking For Group | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| LWN.net | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Mimi and Eunice | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Neil Gaiman's Journal | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| Nina Paley | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| O Abnormal – Scifi/Fantasy Artist | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Oglaf! -- Comics. Often dirty. | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Oh Joy Sex Toy | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| Order of the Stick | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| Original Fiction Archives - Reactor | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| OSnews | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Paul Graham: Unofficial RSS Feed | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Penny Arcade | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Penny Red | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| PHD Comics | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Phil's blog | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| Planet Debian | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Planet GNU | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Planet Lisp | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Pluralistic: Daily links from Cory Doctorow | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| PS238 by Aaron Williams | XML | 19:14, Saturday, 28 March | 20:02, Saturday, 28 March |
| QC RSS | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| Radar | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| RevK®'s ramblings | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| Richard Stallman's Political Notes | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Scenes From A Multiverse | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| Schneier on Security | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| SCHNEWS.ORG.UK | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| Scripting News | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Seth's Blog | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| Skin Horse | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Spinnerette | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| Tales From the Riverbank | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| The Adventures of Dr. McNinja | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| The Bumpycat sat on the mat | XML | 18:35, Saturday, 28 March | 19:15, Saturday, 28 March |
| The Daily WTF | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| The Monochrome Mob | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| The Non-Adventures of Wonderella | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| The Old New Thing | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| The Open Source Grid Engine Blog | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| The Stranger | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| towerhamletsalarm | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| Twokinds | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| UK Indymedia Features | XML | 18:56, Saturday, 28 March | 19:38, Saturday, 28 March |
| Uploads from ne11y | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| Uploads from piasladic | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |
| Use Sword on Monster | XML | 19:07, Saturday, 28 March | 19:54, Saturday, 28 March |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 18:28, Saturday, 28 March | 19:14, Saturday, 28 March |
| what if? | XML | 18:35, Saturday, 28 March | 19:16, Saturday, 28 March |
| Whatever | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| Whitechapel Anarchist Group | XML | 18:28, Saturday, 28 March | 19:17, Saturday, 28 March |
| WIL WHEATON dot NET | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| wish | XML | 19:07, Saturday, 28 March | 19:52, Saturday, 28 March |
| Writing the Bright Fantastic | XML | 19:07, Saturday, 28 March | 19:51, Saturday, 28 March |
| xkcd.com | XML | 19:07, Saturday, 28 March | 19:50, Saturday, 28 March |