Saturday, 07 March

00:28

I Saw U: Hugging Outside La Dive, Buying Soup at Trader Joe’s, and Giving a Rectal Exam in the ER [The Stranger]

Did you see someone? Say something! by Anonymous

Illustrations by Helen Nesburg

three friends on the one line

you and your friends hopped on the packed 1 line yesterday as i was heading home, but your black/blond hair combo got me, hmu?

huggers outside la dive 1/5

Seattle, we don’t hug enough. Or at least not like the two I saw last Thursday night. That was an EMBRACE. TY for keeping romance and whimsy alive.

Drugged up and down bad

Me: I’m the ER for a broken back. You: hot doctor who had to give me a rectal exam. Let’s break HIPPA?

u know how to whistle don't you steve

to have and have not @ SIFF. same stop on D line. i regret not saying hi! u have good taste in clothes & movies. thin man @ central cinema next month?

My heart stopped in the soup aisle

Cap Hill TJ’s 2/11 6pm. You: Dark ponytail, glasses, 2 black panniers, rolled up pant leg Me: Blue coat, short brown beard, wishing I paused when we locked eyes by your bike

Compliments @ st. Bread 2/6

you, blonde cutie w/ a blue bag and “mt. st. helens pin” me: wearing an orange knitted hat. You complimented my hat and name. Baked goods on me?

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!

Friday, 06 March

22:56

22:21

Link [Scripting News]

Mastodon: Good Mastodon accounts to follow for news?

Link [Scripting News]

The video was posted on Nov 18 last year. None of the news stories I found said what the date was or provided a link to the video.

Friday Squid Blogging: Squid in Byzantine Monk Cooking [Schneier on Security]

This is a very weird story about how squid stayed on the menu of Byzantine monks by falling between the cracks of dietary rules.

At Constantinople’s Monastery of Stoudios, the kitchen didn’t answer to appetite.

It answered to the “typikon”: a manual for ensuring that nothing unexpected happened at mealtimes. Meat: forbidden. Dairy: forbidden. Eggs: forbidden. Fish: feast-day only. Oil: regulated. But squid?

Squid had eight arms, no bones, and a gift for changing color. Nobody had bothered writing a regulation for that. This wasn’t a loophole born of legal creativity but an oversight rooted in taxonomic confusion. Medieval monks, confronted with a creature that was neither fish nor fowl, gave up and let it pass.

In a kitchen governed by prohibitions, the safest ingredient was the one that caused the least disturbance. Squid entered not with applause, but with a shrug.

Bonus stuffed squid recipe at the end.

As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.

Blog moderation policy.

22:07

Haiku inches closer to next beta release [OSnews]

And when a Redox monthly progress report is here, Haiku’s monthly report is never far behind (or vice versa, depending on the month). Haiku’s February was definitely a busy month, but there’s no major tentpole changes or new features, highlighting just how close Haiku is to a new regular beta release. The OpenBSD drivers have been synchronised wit upstream to draw in some bugfixes, there’s a ton of smaller fixes to various applications like StyledEdit, Mail, and many more, as well a surprisingly lost list f various file system fixes, improving the drivers for file systems like NTFS, Btrfs, XFS, and others.

There’s more, of course, so just like with Redox, head on over to pour over the list of smaller changes, fixes, and improvements. Just like last month, I’d like to mention once again that you really don’t need to wait for the beta release to try out Haiku. The operating system has been in a fairly stable and solid condition for a long time now, and whatever’s the latest nightly will generally work just fine, and can be updated without reinstallation.

Redox gets NodeJS, COSMIC’s compositor, and much more [OSnews]

February has been a busy month for Redox, the general purpose operating system written in Rust. For instance, the COSMIC compositor can now run on Redox as a winit window, the first step towards fully porting the compositor from COSMIC to Redox. Similarly, COSMIC Settings now also runs on Redox, albeit with only a very small number of available settings as Redox-specific settings panels haven’t been made yet. It’s clear the effort to get the new COSMIC desktop environment from System76 running on Redox is in full swing.

Furthermore, Vulkan software can now run on Redox, thanks to enabling Lavapipe in Mesa3D. There’s also a ton of fixes related to the boot process, the reliability of multithreading has been improved, and there’s the usual long list of kernel, driver, and Relibc improvements as well. A major port comes in the form of NodeJS, which now runs on Redox, and helped in uncovering a number of bugs that needed to be fixed.

Of course, there’s way more in this month’s progress report, so be sure to head on over and read the whole thing.

21:00

Urgent: Repercussions of war in Middle East [Richard Stallman's Political Notes]

The war in the Middle East is having major repercussions, including strengthening ties between Russia and China. Robert Reich calls on Americans to phone their members of Congress in support of invoking Congress's power to stop the US intervention.

There is no need to worry about how this might affect subsequent events in Iran, because nobody in the US government has a plan anyway. One more random shuffle won't make it any more random than it already is.

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: Transfer military spending to human needs [Richard Stallman's Political Notes]

US citizens: call on Congress to transfer military spending to human needs.

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: Shut down US deportation prisons [Richard Stallman's Political Notes]

US citizens: call on Congress to shut down the US deportation prisons rather than permit them to continue torturing.

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.

Conn Selmer's factory moving production to China [Richard Stallman's Political Notes]

A billionaire supporter of the wrecker told the employees of Conn Selmer's factory that it will move production to China.

You can't expect a bullshitter to be sincere when he says he cares about your jobs.

People that needed rescue after military attacked boats [Richard Stallman's Political Notes]

After the US military attacked three unarmed boats on Dec 30, 8 people jumped into the stormy and dangerous water, and needed immediate rescue. The US military waited 40 hours to send a plane to try to rescue them. It did not find anyone.

No survivors have been rescued after any of these murder missions.

The article speculates that this was intentional — that commanders intended the survivors to die. What is indisputable is that they did not make a competent attempt to rescue the survivors.

UK and US medics who have denounced atrocities by Israelis [Richard Stallman's Political Notes]

Volunteer medics in UK and US who have denounced atrocities committed by Israelis that they witness while in Gaza say that Israel has refused to let them return to Gaza to work as medics again.

This retribution seems designed to intimidate present and future medics in Gaza so that they will help Israel cover up atrocities.

FBI investigating members of Extinction Rebellion [Richard Stallman's Political Notes]

The FBI is investigating members of Extinction Rebellion.

This is an instance of how the wrecker aims to get things backwards. The FBI ought to investigate those who are contributing, knowingly, to the danger of extinction.

Fuel use of plugin-in hybrid cars [Richard Stallman's Political Notes]

Many plug-in hybrid cars use considerably more fuel than manufacturers claim. How much more, varies from model to model.

FDA tried to reject flue mRNA vaccine [Richard Stallman's Political Notes]

The Food and Drug Administration tried to reject the new mRNA flu vaccine without even examining it, in accord with antivax ideology, but has changed its mind and will now examine it.

US wants alliance with right-wing countries [Richard Stallman's Political Notes]

The US told Europe it still wants an alliance — but only with tyrannical, right-wing countries.

The EU should avoid agreeing to this, and avoid being scared by the threats, while accepting the alliance as if it didn't have those conditions. This way it can play for time hoping the US kicks out these right-wing jerks, and use the time to prepare for the US to break off with them.

Digital systems to control parts of your home [Richard Stallman's Political Notes]

Aside from the danger of remote surveillance and control, digital systems to control parts of your home have a tendency to be too smart for your own good.

When I looked for an apartment in 2019, I rejected outright any building with digital rather than metal keys. I do not trust whoever controls the system not to track residents' movements. I also rejected outright any building with a security camera.

Long Covid still here [Richard Stallman's Political Notes]

*Long Covid is still here. I know – my life came to a stop because of it.*

Amazon Alexa listening device report [Richard Stallman's Political Notes]

Someone asked Amazon for a report on everything that their Alexa listening device had listened to since they first got it. It was enormous.

Think about which words Amazon might have set it up to alert various US government departments about — and which departments those might be. (That might depend on which country you are in.)

Amazon never hears anything in my home.

Journalists tortured in prison [Richard Stallman's Political Notes]

*The Committee to Protect Journalists (CPJ) reviewed dozens of testimonies, photographs and medical records documenting what it describes as serious abuses by Israeli soldiers and prison guards against Palestinian reporters. The report draws on in-depth interviews from 59 Palestinian journalists. Of those interviewed, 58 reported being subjected to what they described as torture [in prison].

"While conditions varied at different facilities, the methods those interviewed recounted – physical assaults, forced stress positions, sensory deprivation, sexual violence, and medical neglect – were strikingly consistent," the report states.*

Zohran Mamdani's comments on "globalize the intifada [Richard Stallman's Political Notes]

I just saw Zohran Mamdani's comments on "globalize the intifada" from last October, and his stance had much in common with mine.

I also recognize the tone of the criticism he received for discouraging that phrase. There are people whose attitude is, "If you reject my method of expressing disapproval of X, you're weak, and effectively a supporter of X." This reasoning is not valid.

Social media sites eliminating fact checking [Richard Stallman's Political Notes]

As part of the bullshitter's War on Truth, social media sites that suck up to him have eliminated fact checking. Since he equates fact-checking to censorship, they do too.

The difference between fact-checking and censorship is that the latter blocks or prohibits saying something, while the former labels it with a criticism that is labeled as such.

There is no absolute and inherently inerrant source of truth. Therefore, freedom of speech must include the freedom to make statements that others call "false". (If that becomes prohibited, everything that magats call "lies" will be censored.)

But that is no reason to get rid of fact checking.

Deportation thugs demanding antisocial media posts [Richard Stallman's Political Notes]

The US Department of Hatred and Sadism, parent organization of the deportation thugs, makes a practice of subpoenas to demand antisocial media hand over identifying information about users who post, track, or criticize deportation thugs.

This comes after convincing Google and Amazon to censor the special apps for exchanging information about where thug operations are taking place.

The pretext the thugs give is that this information might perhaps be used for planning violence against the thugs. That is a rather weak pretext, since violence started by protesters is very rare, whereas violence (sometimes deadly) by thugs against protesters and journalists is frequent.

That might be an argument for quashing the subpoenas, if anyone went to court to try to do that. But these companies, since they suck up to the persecutor anyway, don't resist the subpoenas very hard.

The long-term lesson from this is not to trust your data to a cloudy storage system under the influence of a Big Tech company. Especially not if company makes users identify themselves, or blocks them from connecting via Tor. Such a company is generally a willing tool for a fascist regime such as the persecutor is trying to impose on the US.

US citizen George Retes arrested and jailed by deportation thugs [Richard Stallman's Political Notes]

US citizen George Retes was arrested by deportation thugs while he was commuting to work, then jailed for days without access to family, an attorney, or information about the charges against him. He is now free, and suing. I hope he wins, but this is not enough.

The fact that Retes is an Army veteran does not seem significant to me. It would be just as bad if they did this to someone who was never in the US military.

I believe in being very tough on government crime.

When individual official thugs break the law in a significant way, they deserves to pay a penalty, such as a prison sentence. When the government agency broke the law, the agency also should pay a penalty. But when the agency follows a general practice of breaking the law, and that practice was accepted by upper management, the upper management should get the prison sentence.

Law about 3D printers proposed in California [Richard Stallman's Political Notes]

A bill has been proposed in California to require all 3D printers to come equipped with gun-pattern detectors, starting in 2029.

In principle, I don't defend the right to make your own guns. I don't think what this law requires is inherently unjust.

However, there will be a tendency to implement it by making it impossible or illegal to modify the software in a 3D printer. That would be unjust.

Molding the media, Hollywood control [Richard Stallman's Political Notes]

The corrupter has found he can order some Hollywood billionaires around, much the way kings ordered their courtiers around.

20:49

Link [Scripting News]

Remember when, just weeks ago, the Dems told the military that they must not obey illegal orders. We passed that red line when they obeyed orders to start a war that had not been declared by Congress.

Link [Scripting News]

If you have an X account, esp if you have a lot of followers, please RT this post. I'd like to get my real account back. Thanks for your help.

19:49

In This House We Believe in Goblins, Gondal, Björk, and Hildegard of Bingen [The Stranger]

Mt Fog on the Making of Their New Album, Every Stone Is Green
by Audrey Vann

If a Washington rainforest started a band, it would sound something like Mt Fog. Carolyn B.’s playful whispers are like a sprite luring you into a mossy forest; the rhythm section—Andy Sell and Casey Rosebridge—like raindrops plopping into a mushroom; the electronics shimmer like a ray of light through the trees. The Seattle-based trio whimsically marries the vocal stylings of Kate Bush, Björk, and Siouxsie Sioux with sparse electronics, evocative of CAN and Mort Garson, and a free jazz song structure. Ahead of releasing their new album, Every Stone Is Green (out Mar 13), and accompanying release show at the Tractor Tavern, I spoke to the band about the medieval mystics, cosmic jazz albums, and psychedelic dreams that inspired them.

One thing that is really unique about Mt Fog is that you don’t use six-string guitars. Was this a conscious choice or something that happened by accident?
CAROLYN: Well, I started Mt Fog as my solo project, and I don't play guitar—I’ve never been that into guitars. So, in the beginning, all the music I was writing was oriented towards voice and a drum machine. It has just evolved from that. Also, I think a trio is the most powerful, stable form. If we had a guitarist, they wouldn't be included in our throuple scenarios. [Laughs]

ANDY: Carolyn covers a lot of ground with the various synth patches and her voice. We play around with all kinds of textures as well, with the drum and bass. It's full enough without having a guitar. Although I like the guitar sometimes. It's either guitar, or I’m like, hey, we should put some congas on this thing!

CAROLYN: No guitar. No shaker. No slap bass. 

ANDY: There are a lot of rules in Mt Fog [laughs]. It’s not a democracy, and that's cool. 

Every Stone Is Green has an improvisational feel to it, especially on songs like “Trees in Conversation.” Were spontaneous decisions made while recording?
ANDY: There's not a whole lot to say about the drums on “Trees in Conversation,” but it was improvised. We kind of built that into the song that's right after it, so it starts with the drum solo, then goes into “Eyes in Buildings.” I have a jazz background, so that song has that improvisational character to it. I was surprised when Carolyn said, “Yeah, the drum solo should be this long!” 

CAROLYN: Side B is more spontaneous because we recorded it live together in the studio. My instincts on this album were to capture a fleeting, whimsical, curious feeling, so I'm really happy to hear that comes across. The song started as these rough ideas, as songs do, and then we worked on them together, and things would come up just naturally, spontaneously. For example, “Imperfect Machine” was something Casey came up with while I was taking a break during rehearsal. I came in, and he was playing this really cool thing. I made a voice memo of it, and then he and Andy expounded upon that idea at the studio. Then, I had a realization that the song sounded like a caravan full of giggling goblins with a little ratty flag coming through the desert, that’s like, getting closer and closer, then goes off into the distance. 

What media were you consuming while writing or recording the album?
CAROLYN: ECM’s ’70s jazz records were a big influence, particularly Gateway [the trio of John Abercrombie, Dave Holland, and Jack DeJohnette]. It’s hard to describe, but they create these portals in time that you could spend a million years in—it's really beautiful cosmic jazz. One of the records we have by them had a skip in it during Dave Holland’s bass playing that was really cool. I recorded it, and then while learning bass, I tried to replicate that baseline skip. That became the basis for “Grimelda’s Cave.” It was an immediate reflection of the things we were listening to. We were also listening to a lot of prog—Yes’s Fragile, and a lot of other weird 1970s jazz. I was just thinking a lot about the different textures you can make and how music can be fractal; there are micro moments that can be really special, but how do we turn them into a whole song? 

I was also inspired by mystics of the medieval times, especially Hildegard of Bingen. I've always loved her—I organized a mini music festival last year inspired by her, which got me to delve deeper into her concept of “viriditas,” about the green energy that's within us all. One of the songs, “Life as a Window,” is from Hildegard’s perspective. 

ANDY: We all have musical backgrounds, but it's all filtered through Carolyn’s vision. Carolyn has concepts for a lot of the songs, like “Hey, this sounds like goblins!”

CASEY: Yeah, it’s usually goblins. 

You also mentioned the Brontës in your album description. Do you have a favorite Brontë sister or a favorite Brontë novel?
CAROLYN: Definitely Jane Eyre. While thinking about how to describe the album, I was like, “It's Gothic with a capital G, like Gothic literature.” Andy was like, “No one will know what that means; they’ll think it means dark wave.” So I described it as “a Gothic tale, in the Brontë sisters’ sense.” 

I think, too, that there are feminine aspects to the music, reminiscent of a journey that might get scary at times. You might encounter big landscapes and ghosts. You may not be able to entirely understand what's going on, and there is a lot of heightened emotion. The Brontë sisters created huge worlds, even though their worlds were actually really small. They were governesses; they didn't traverse that much area, yet they were able to build these magnificent emotional universes. 

My friend actually asked me recently which Brontë sister each member of Mt Fog is. I was like, “We're not the sisters, we’re actually long-lost characters from the Brontë sisters' imagined world of Gondal. [Laughs]

Do you think seclusion is necessary for making art?
CAROLYN: Actually, Björk was recently talking about how streaming is the worst thing for artists because of the pressure of constantly being visible and making things. Björk is on our wall. [Points at poster] We love Björk in this household. “In this house we believe…” [Laughs

It’s a great thing to think about, because being able to retreat, hide, and explore things without being looked at is really, really important. It’s also really important for artists to be original. When you're out in the world, you're like a sponge absorbing information, and you need time to go home and dream about it. I think isolation is the sleeping/dreaming aspect of being an artist—you have to go to sleep so you can learn things. I think being alone is important as an artist, so you can synthesize the world that you're experiencing. Throw your computer into the sea, metaphorically (don’t cause environmental pollution!). 

Is the band’s relationship to the internet something you guys think about often?
CAROLYN: Definitely. We're all involved with Seattle Artists Against Spotify. As artists, we have a responsibility to be leaders and help create the world that we want to see. Our music is not on Spotify, but people are still listening to it. I don’t think these corporate-owned platforms have our best interests in mind. It’s a losing game for artists to try to succeed on these platforms. I'd rather have 100 people listen to our record and cry than a million people streaming on Spotify while they're doing five other things and paying their taxes.

What are your personal favorite tracks on the album?
CASEY: “Look Inside” really resonates with me lyrically and musically. I like the melody, the bass line, and the shape of the song—it’s fun to play. Every element is individually catchy, the energy is infectious, and the message is really positive.

CAROLYN: My favorite track is “A Single Green Strand Emerges,” because the idea came from the most vivid dream I've ever had. In this dream, I was looking for someone and came upon this vintage camera with a single green strand emerging from the aperture. I knew I had to crawl into the camera to find the person I was looking for. When I crawled inside, the middle of the camera was a dirt tunnel. I could feel that I was climbing through this tight space, and then, I emerged into a green, soft world that was very childlike. I found the person I was looking for, but I also knew I had to leave soon. It was one of the most psychedelic experiences I've ever had. So, the song is about that dream, and also about the feeling of working really hard to get someone to love you, which is a sad feeling that I've experienced before.

ANDY: “Green Strand Emerges” is also my favorite. I just love the feel and the power of it. I think it's a nice representation of what the band has morphed into. Plus, we recorded it live in the studio together, which is a testament to what the band can do. We were able to pull it off, and we surprised ourselves when we finished recording it. We were like, “Holy shit, this is it!”

Can you guys tell me a little bit more about the album artwork? Did the artist make it before listening to the album, or after? How did it come about?
CAROLYN: Yeah, we actually have the original oil painting right here. [Points at wall] It was done by our friend Nico Lund. She came to one of our shows, and we just connected like mad. Then, I reached out to her to see if she would make an original painting for our album art. It turns out she was about to reach out to me about the same thing! We were both in each other's heads. So, I shared all of the earliest recordings of the album, before we had fully recorded everything. 

We had a lot of conversations, but she is a fan of our music, so she already knew the vibe. When I first saw the concept sketch, I started crying because it was just so perfect. Then she took that original concept and made this beautiful painting. She's an amazing artist. Her work is really cool in person, too.

Let’s end with a fun question! Can you each share an artist, album, or song that you love but that other people hate? What music needs to be reevaluated?
CAROLYN: I like Björk’s 2007 album Volta, and I know some people really don't like that one. I love the song “Earth Intruders”—the very beginning sounds like gross, muddy footsteps. I actually like tried to recreate it for one of our other songs, and I wasn't able to come close. I also like that weird costume she wears on the cover.

ANDY: Maybe the third Duran Duran record, Seven and the Ragged Tiger—I think it's a really cool record. I also like the Accüsed a lot, which is a pretty far stretch from Mt Fog. Martha Splatterhead's Maddest Stories Ever Told is one of my favorite records that's ever been put out. 

CASEY: I’ll say Muse—people always told me that they were a poser band to like when I was like 18. They’d say, “Oh, you like Muse? That’s so lame!” But I thought they were so cool, and I still think they have cool musical ideas—they seem like fucking dorks, but whatever.

See Mt Fog at Tractor Tavern on Thursday, March 12, 8 pm, 21+

The Best Bang for Your Buck Events in Seattle This Weekend: Mar 6–8, 2026 [The Stranger]

Seattle Women's March, Ai Weiwei: Circle of Animals/Zodiac Heads, and More Cheap & Easy Events Under $20
by EverOut Staff

Ready for the time jump that is spring forward this Sunday? Before Monday's rough wake up call, spend time at weekend events from the Seattle Women's March to Seattle Fat Mall's Big Love Social + Market and from Chinatown-International District's Lunar New Year Celebration to the opening of Ai Weiwei: Circle of Animals/Zodiac Heads. For more ideas, check out our top picks of the week.

FRIDAY LIVE MUSIC

Echo Ravine (Album Release,) VuVu & Black Nite Crash
Local band Echo Ravine joked on Instagram that though two of its members are originally from Massachusetts, their friendship survived the Super Bowl. The group is used to bridging divides; their alt-rock song "Tumbling Wall" is about breaking down literal and metaphorical barriers between countries and people. The track is off their third album, Taking Up Space, which they put out last month and are celebrating with a release show at Seattle's own community-owned cooperative venue this Friday. Pick up a one-of-a-kind record at the show—the band hand-stamped images and track names onto the vinyl covers for a perfectly DIY feel. Fellow shoegaze bands Black Nite Crash and VuVu open the night with their layered, guitar-driven rock. SHANNON LUBETICH
(Conor Byrne Pub, Ballard, $15)

19:00

Thorsten Alteholz: My Debian Activities in February 2026 [Planet Debian]

Debian LTS/ELTS

This was my hundred-fortieth month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.

During my allocated time I uploaded or worked on:

  • [DLA 4474-1] rlottie security update to fix three CVEs related to boundary checks.
  • [DLA 4477-1] munge security update to fix one CVE related to a buffer overflow.
  • [DLA 4483-1] gimp security update to fix four CVEs related to arbitrary code execution.
  • [DLA 4487-1] gegl security update to fix two CVEs related to heap-based buffer overflow.
  • [DLA 4489-1] libvpx security update to fix one CVE related to a buffer overflow.
  • [ELA-1649-1] gimp security update to fix three CVEs in Buster and Stretch related to arbitrary code execution.
  • [ELA-1650-1] gegl security update to fix two CVEs in Buster and Stretch related to heap-based buffer overflow.

Some CVEs could be marked as not-affected for one or all LTS/ELTS-releases. I also worked on package evolution-data-server and attended the monthly LTS/ELTS meeting.

Debian Printing

This month I uploaded a new upstream versions:

This work is generously funded by Freexian!

Debian Lomiri

This month I continued to worked on unifying packaging on Debian and Ubuntu. This makes it easier to work on those packages independent of the used platform.

This work is generously funded by Fre(i)e Software GmbH!

Debian Astro

This month I uploaded a new upstream version or a bugfix version of:

  • c-munipack to unstable. This package now contains a version without GTK support. Upstream is working on a port to GTK3 but seems to need some more time to finish this.
  • libasi to unstable.
  • libdfu-ahp to unstable.
  • libfishcamp to unstable.
  • libinovasdk to unstable.
  • libmicam to unstable.
  • siril to unstable (sponsored upload).

Debian IoT

This month I uploaded a new upstream version or a bugfix version of:

Unfortunately development of openoverlayrouter finally stopped, so I had to remove this package from the archive.

Debian Mobcom

This month I uploaded a new upstream version or a bugfix version of:

misc

This month I uploaded a new upstream version or a bugfix version of:

I also sponsored the upload of some Matomo dependencies. Thanks a lot to William for preparing the packages

18:28

Man Bun [Penny Arcade]

Fear not - the grim spectre of continuity will not long darken our doorway. In fact, continuity just put on its hat and coat and is even now walking out the door. Good riddance! Hope that's the last we see of him for a while. But Pokopia is from the team that co-did Dragon Quest Builders 2, which is a game that bored through both our skulls and laid a clutch of glistening eggs. They didn't end up hatching, but still. And I think they might have dried out. When I walk down the steps I sound like a huge maraca.

18:14

When Read­Directory­ChangesW reports that a deletion occurred, how can I learn more about the deleted thing? [The Old New Thing]

A customer was using Read­Directory­ChangesW to monitor changes to a directory. However, they ran into a problem when they received a FILE_ACTION_REMOVED notification: Since the notification is raised when the item is deleted, they can’t do a Get­File­AttributesEx to find out whether the deleted item was a file or a subdirectory, and if it was a file, the size of the deleted file. Their program needs that information as part of its directory monitoring, so what mechanism is there to recover that information?

The Read­Directory­ChangesW function provides no way to recover information about the item that was deleted. All you get is the name of the item.

Recall that Read­Directory­ChangesW is for detecting changes to information that would appear in a directory listing. The idea is that your program performs a Find­First­File/Find­Next­File to build an in-memory cache for a directory, and then you can use Read­Directory­ChangesW to perform incremental updates to your cache. For example, if you see a FILE_ACTION_ADDED, then you can call Get­File­Attributes or Get­File­Attributes­Ex to get information about the thing that was added and update your cache. That way, when you see the FILE_ACTION_REMOVED, you can read the entry from your cache to get the information about the item that was removed (as well as removing it from your cache).

There is a race condition here, however. If the item is added and then immediately deleted, then when you get around to calling Get­File­Attributes, it won’t be there, so you don’t actually know what it was.

Fortunately, there’s Read­Directory­Changes­ExW. If you ask for Read­Directory­Notify­Extended­Information, then you get back a series of FILE_NOTIFY_EXTENDED_INFORMATION structures, and in addition to the action and the file name, those also contain directory information about the item, including its file attributes. This information is provided both on the add and on the remove, so you can just look at the FileAttributes on the FILE_ACTION_REMOVED to see whether it was a file or a folder, and if it was a file, you can use the FileSize to see the logical size of the file at the time it was deleted.

The post When <CODE>Read­Directory­ChangesW</CODE> reports that a deletion occurred, how can I learn more about the deleted thing? appeared first on The Old New Thing.

Slog AM: Layoffs at the 5th Avenue Theater, Kristi Noem Gets the Boot, Swiss Canton Lets Coat of Arms Keep Its Red Bear Penis [The Stranger]

The Stranger's morning news roundup. by Nathalie Graham

Layoffs at the 5th: The 5th Avenue Theatre Company is laying off 14 employees, cutting staff from 55 people to 41. The 5th is mired in the $7.5 million budget deficit it’s accumulated since the pandemic. Subscription rates haven’t recovered since COVID-era slowdowns. So, the theater is cutting jobs in "marketing, box office, education, and artistic departments," according to the Seattle Times. If you care about live theater in Seattle, you better go see their production of Jesus Christ Superstar this May. Don’t be a Judas.

We're Doing Slurs Now? During a House debate in Olympia over a bill that would “eliminate the Community Protection Program, a service for people with developmental disabilities who have a history of sexually aggressive behavior" Sen. Leonard Christian, R-Spokane Valley said this: "The folks that we’re responsible for, we’re putting rapists in with retarded people," reports the Seattle Times. It's not 2007 anymore, Leonard. He later defended his use of the r-word, saying it emphasized that the bill would be "feeding these people to the wolves." He has not apologized.

School District Sued: Makena Simonsen, a special needs student in the Edmonds School District (ESD), graduated from Lynnwood High School with a 3.87 GPA and a first-grade reading level. Four years after getting her diploma, Simonsen's family is suing ESD claiming it was "benevolent discrimination" to hand their daughter a diploma. Because if she hadn’t gotten one, she would’ve been eligible for a free vocational program in the district that helps special needs students make the transition to adult life. Simonsen had to pay more than $40,000 for a similar program at Bellevue College.

Big News for like 20 People: The walking, rolling, and biking advocacy group Seattle Neighborhood Greenways has rebranded to Seattle Streets Alliance. Just thought some of you might care, idk.

The Weather: Drizzly, rainy. What did you expect?

The Time: And say goodbye to an hour of sleep starting Sunday. Clocks skip forward this weekend.

Security. We’re On It: Donald Trump has removed Kristi Noem as Secretary of Homeland Security and replaced her with Sen. Markwayne Mullin (R-Oklahoma). Her new role is “Special Envoy for The Shield of the Americas,” head of a new security initiative. The purpose of this very real job will be announced tomorrow at an event in Florida.

It’s Tornado Season: Warm Gulf air is mixing with cold air from Canada. Millions of Americans from Iowa to Texas could be hit by strong tornados, the AP reports. Taking precautions could be the difference between life and death, experts say.

Water Is Wet: Donald Trump is in the Epstein files. The Pope is from Chicago. And the Florida International University college republicans are racist. Leaked WhatsApp group chats showed—surprise, surprise—the young conservatives are sending slurs, sexist and homophobic comments, and Nazi references back and forth. I can't wait until they graduate into high-level roles at Palantir.

I Don't Know Who I Am Anymore: For some reason, I care about Shohei Ohtani hitting a grand slam in his first game with team Japan at the World Baseball Classic.

SHOHEI OHTANI GRAND SLAM

[image or embed]

— MLB Daily News (@insidemlbnews.bsky.social) March 6, 2026 at 2:35 AM

Meanwhile, the Mariners Blew Chunks in Their Latest Spring Training Game: As Lookout Landing put it, Seattle's favorite only baseball team "gave up three touchdowns and two field goals" to the Padres yesterday. Yep, they lost 27-6.

An Update from Job Land: It's no good out there in Job Land. Employers axed 92,000 jobs in February and unemployment climbed to 4.4 percent. The unemployment rate isn’t bad, but the fact that it's rising is worrisome. The report paints a bleak picture of stagnant job growth. Hang onto your job if you have one.

Congrats to everyone who voted for Trump and a Republican Congress "for the economy." This is what you get, a sputtering job creation engine that can't make progress like before and keeps rolling backwards.

www.bloomberg.com/news/article...

[image or embed]

— Max Kennerly (@maxkennerly.bsky.social) March 6, 2026 at 7:20 AM

We are the Baddies: According to Reuters, US military investigators are pretty sure the US is responsible for the apparent strike on an Iranian girls school that killed 150 children. The investigation hasn't been concluded yet.

War Continues: On Friday, Israel warplanes barraged Tehran and Beirut. Iran launched retaliatory strikes against Israel. President Trump made it clear he wants "complete surrender" from Iran. He made this statement in a Truth Social post.

Pass Gas: China is pressing Tehran to allow crude oil and Qatari gas safe passage through the Strait of Hormuz, Reuters reports. The war has all but shut the Straight, which makes China unhappy, because China gets 45 percent of its oil from the Straight. Meanwhile, crude oil prices are up 15 percent and US gas prices rose 11 percent in one week, hitting their highest point in the last year-and-a-half. Will this radicalize the normies?

Don't Forget about the Real Threat to Humanity: While everyone is worried about the rise of fascism, global warfare, and AI, climate change is still chugging away and spelling our doom. Researchers found that we are heating the earth faster than ever before. The heating rate has almost doubled. From 1970 and 2015, global heating increased by a rate less than 0.2 celsius per decade. In this most recent decade, that number jumped to 0.35 celcius. Scientists say that's the highest jump in warming since anyone started keeping track of temperature back in 1880. We are so boned.

Huge News: The Swiss Canton of Bern has chosen to keep the bear penis on its coat of arms after the government rejected a proposal to erase his junk. This bear will continue to hang dong as he has proudly for 600 years.

A Song for your Friday: I didn't know what to pick, so I scrolled randomly in my library and stopped on this. Enjoy.

News editor Vivian McCall poured a bit of blood and sweat into this slog.

17:49

PSPP 2.1.1 has been released [Planet GNU]

I'm very pleased to announce the release of a new version of GNU PSPP.  PSPP is a program for statistical analysis of sampled data.  It is a free replacement for the proprietary program SPSS.

Changes from 2.1.0 to 2.1.1:

  • Translation updates.
  • Bug fixes in build system and tests.
  • No longer mistakenly labeled as a "test release".

Please send PSPP bug reports to bug-gnu-pspp@gnu.org.

[$] Fedora shares strategy updates and "weird research university" model [LWN.net]

In early February, members of the Fedora Council met in Tirana, Albania to discuss and set the strategic direction for the Fedora Project. The council has published summaries from its strategy summit, and Fedora Project Leader (FPL) Jef Spaleta, as well as some of the council members, held a video meeting to discuss outcomes from the summit on February 25. Topics included a plan to experiment with Open Collective to raise funds for specific Fedora projects, tools to build image-based editions, and more. Spaleta also explained his model for Fedora governance.

Anthropic and the Pentagon [Schneier on Security]

OpenAI is in and Anthropic is out as a supplier of AI technology for the US defense department. This news caps a week of bluster by the highest officials in the US government towards some of the wealthiest titans of the big tech industry, and the overhanging specter of the existential risks posed by a new technology powerful enough that the Pentagon claims it is essential to national security. At issue is Anthropic’s insistence that the US Department of Defense (DoD) could not use its models to facilitate “mass surveillance” or “fully autonomous weapons,” provisions the defense secretary Pete Hegseth derided as “woke.”

It all came to a head on Friday evening when Donald Trump issued an order for federal government agencies to discontinue use of Anthropic models. Within hours, OpenAI had swooped in, potentially seizing hundreds of millions of dollars in government contracts by striking an agreement with the administration to provide classified government systems with AI.

Despite the histrionics, this is probably the best outcome for Anthropic—and for the Pentagon. In our free-market economy, both are, and should be, free to sell and buy what they want with whom they want, subject to longstanding federal rules on contracting, acquisitions, and blacklisting. The only factor out of place here are the Pentagon’s vindictive threats.

AI models are increasingly commodified. The top-tier offerings have about the same performance, and there is little to differentiate one from the other. The latest models from Anthropic, OpenAI and Google, in particular, tend to leapfrog each other with minor hops forward in quality every few months. The best models from one provider tend to be preferred by users to the second, or third, or 10th best models at a rate of only about six times out of 10, a virtual tie.

In this sort of market, branding matters a lot. Anthropic and its CEO, Dario Amodei, are positioning themselves as the moral and trustworthy AI provider. That has market value for both consumers and enterprise clients. In taking Anthropic’s place in government contracting, OpenAI’s CEO, Sam Altman, vowed to somehow uphold the same safety principles Anthropic had just been pilloried for. How that is possible given the rhetoric of Hegseth and Trump is entirely unclear, but seems certain to further politicize OpenAI and its products in the minds of consumers and corporate buyers.

Posturing publicly against the Pentagon and as a hero to civil libertarians is quite possibly worth the cost of the lost contracts to Anthropic, and associating themselves with the same contracts could be a trap for OpenAI. The Pentagon, meanwhile, has plenty of options. Even if no big tech company was willing to supply it with AI, the department has already deployed dozens of open weight models—whose parameters are public and are often licensed permissively for government use.

We can admire Amodei’s stance, but, to be sure, it is primarily posturing. Anthropic knew what they were getting into when they agreed to a defense department partnership for $200m last year. And when they signed a partnership with the surveillance company Palantir in 2024.

Read Amodei’s statement about the issue. Or his January essay on AIs and risk, where he repeatedly uses the words “democracy” and “autocracy” while evading precisely how collaboration with US federal agencies should be viewed in this moment. Amodei has bought into the idea of using “AI to achieve robust military superiority” on behalf of the democracies of the world in response to the threats from autocracies. It’s a heady vision. But it is a vision that likewise supposes that the world’s nominal democracies are committed to a common vision of public wellbeing, peace-seeking and democratic control.

Regardless, the defense department can also reasonably demand that the AI products it purchases meet its needs. The Pentagon is not a normal customer; it buys products that kill people all the time. Tanks, artillery pieces, and hand grenades are not products with ethical guard rails. The Pentagon’s needs reasonably involve weapons of lethal force, and those weapons are continuing on a steady, if potentially catastrophic, path of increasing automation.

So, at the surface, this dispute is a normal market give and take. The Pentagon has unique requirements for the products it uses. Companies can decide whether or not to meet them, and at what price. And then the Pentagon can decide from whom to acquire those products. Sounds like a normal day at the procurement office.

But, of course, this is the Trump administration, so it doesn’t stop there. Hegseth has threatened Anthropic not just with loss of government contracts. The administration has, at least until the inevitable lawsuits force the courts to sort things out, designated the company as “a supply-chain risk to national security,” a designation previously only ever applied to foreign companies. This prevents not only government agencies, but also their own contractors and suppliers, from contracting with Anthropic.

The government has incompatibly also threatened to invoke the Defense Production Act, which could force Anthropic to remove contractual provisions the department had previously agreed to, or perhaps to fundamentally modify its AI models to remove in-built safety guardrails. The government’s demands, Anthropic’s response, and the legal context in which they are acting will undoubtedly all change over the coming weeks.

But, alarmingly, autonomous weapons systems are here to stay. Primitive pit traps evolved to mechanical bear traps. The world is still debating the ethical use of, and dealing with the legacy of, land mines. The US Phalanx CIWS is a 1980s-era shipboard anti-missile system with a fully autonomous, radar-guided cannon. Today’s military drones can search, identify and engage targets without direct human intervention. AI will be used for military purposes, just as every other technology our species has invented has.

The lesson here should not be that one company in our rapacious capitalist system is more moral than another, or that one corporate hero can stand in the way of government’s adopting AI as technologies of war, or surveillance, or repression. Unfortunately, we don’t live in a world where such barriers are permanent or even particularly sturdy.

Instead, the lesson is about the importance of democratic structures and the urgent need for their renovation in the US. If the defense department is demanding the use of AI for mass surveillance or autonomous warfare that we, the public, find unacceptable, that should tell us we need to pass new legal restrictions on those military activities. If we are uncomfortable with the force of government being applied to dictate how and when companies yield to unsafe applications of their products, we should strengthen the legal protections around government procurement.

The Pentagon should maximize its warfighting capabilities, subject to the law. And private companies like Anthropic should posture to gain consumer and buyer confidence. But we should not rest on our laurels, thinking that either is doing so in the public’s interest.

This essay was written with Nathan E. Sanders, and originally appeared in The Guardian.

17:28

14:49

OpenWrt 25.12.0 released [LWN.net]

Version 25.12.0 of the OpenWrt router distribution is available; this release has been dedicated to the memory of Dave Täht. Changes include a switch to the apk package manager, the integration of the attended sysupgrade method, and support for a long list of new targets.

Security updates for Friday [LWN.net]

Security updates have been issued by Debian (chromium), Fedora (freerdp, libsixel, opensips, and yt-dlp), Mageia (python-django, rsync, and vim), Red Hat (go-rpm-macros and osbuild-composer), SUSE (7zip, assertj-core, autogen, c3p0, cockpit-machines, cockpit, cockpit-repos, containerized-data-importer, cpp-httplib, docker, docker-stable, expat, firefox, gnutls, go1.25-openssl, golang-github-prometheus-prometheus, haproxy, ImageMagick, incus, kernel, kubevirt, libsoup, libsoup2, mchange-commons, ocaml, openCryptoki, openvpn, php-composer2, postgresql14, postgresql15, python-Authlib, python-azure-core, python-nltk, python-urllib3_1, python311-Django4, python311-pillow-heif, python311-PyPDF2, python313, python313-Django6, qemu, rhino, roundcubemail, ruby4.0-rubygem-rack, sdbootutil, and wicked2nm), and Ubuntu (less, nss, python-bleach, qtbase-opensource-src, and zutty).

14:07

Error'd: That's What I Want [The Daily WTF]

First up with the money quote, Peter G. remarks "Hi first_name euro euro euro, look how professional our marketing services are! "

1

 

"It takes real talent to mispell error" jokes Mike S. They must have done it on purpose.

0

 

I long wondered where the TikTok profits came from, and now I know. It's Daniel D. "I had issues with some incorrectly documented TikTok Commercial Content API endpoints. So I reached out to the support. I was delighted to know that it worked and my reference number was . PS: 7 days later I still have not been contacted by anyone from TikTok. You can see their support is also . "

2

 

Fortune favors the prepared, and Michael R. is very fortunate. "I know us Germans are known for planning ahead so enjoy the training on Friday, February 2nd 2029. "

3

 

Someone other than dragoncoder047 might have shared this earlier, but this time dragoncoder047 definitely did. "Digital Extremes (the developers of Warframe) were making many announcements of problems with the new update that rolled out today [February 11]. They didn’t mention this one!"

4

 

[Advertisement] Picking up NuGet is easy. Getting good at it takes time. Download our guide to learn the best practice of NuGet for the Enterprise.

12:49

Russell Coker: Links March 2026 [Planet Debian]

Krebs has an interesting article about the Kimwolf botnet which uses residential proxy relay services [1].

cory Doctorow wrote an insightful blog post about code being a liability not an asset [2].

Aigars Mahinovs wrote an interesting review of the BMW i4 M50 xDrive and the BMW i5 eDrive40 which seem like very impressive vehicles [3]. I was wondering what BMW would do now that all the features they had in the 90s have been copied by cheaper brands but they have managed to do new and exciting things.

Arstechnica has an interesting article about the recently declassified JUMPSEAT surveillance satellites that ran from 1971 to 1987 [4].

Cory Doctorow wrote an interesting blog post about OgApp which briefly allowed viewing Instagram without ads and the issues of US corporations misusing EU copyright law [5].

ZDNet has an interesting article about new planned developments for the web of trust for Linux kernel coders (and others) [6].

Last month India had a 300 million person strike, we need more large scale strikes against governments that support predatory corporations [7].

Techdirt has an insightful article on the ways the fascism is bad for innovation and a market based economy [8].

The Acknowledgements section from the Scheme Shell (scsh) reference is epic [9].

Vice has an insightful article on research about “do your own research” and how simple Google searches tend to reinforce conspiracy theories [10]. A problem with Google is that it’s most effective if you already know the answer.

Issendai has an interesting and insightful series of blog posts about estranged parents forums which seems a lot like Incel forums in the way they promote abuse [11].

Caitlin Johnstone wrote an interesting article about how “the empire” caused the rebirth of a real counterculture by their attempts to coerce support for Israeli atrocities [12].

Radley Balko wrote an interesting article about “the courage to be decent” concerning the Trump regime’s attempts to scare lawyers into cooperating with them [13].

Terry Tan wrote a useful resource on the API for Google search, this could be good for shell scripts and for 3rd party programs that launch a search [14].

The Proof has an interesting article about eating oysters and mussels as a vegan [15].

All Things Linguistic has an interesting and amusing post about Yoda’s syntax in non-English languages [16].

12:35

Claude Used to Hack Mexican Government [Schneier on Security]

An unknown hacker used Anthropic’s LLM to hack the Mexican government:

The unknown Claude user wrote Spanish-language prompts for the chatbot to act as an elite hacker, finding vulnerabilities in government networks, writing computer scripts to exploit them and determining ways to automate data theft, Israeli cybersecurity startup Gambit Security said in research published Wednesday.

[…]

Claude initially warned the unknown user of malicious intent during their conversation about the Mexican government, but eventually complied with the attacker’s requests and executed thousands of commands on government computer networks, the researchers said.

Anthropic investigated Gambit’s claims, disrupted the activity and banned the accounts involved, a representative said. The company feeds examples of malicious activity back into Claude to learn from it, and one of its latest AI models, Claude Opus 4.6, includes probes that can disrupt misuse, the representative said.

Alternative link here.

10:07

Tight rope standing [Seth's Blog]

It’s much easier to walk a tight rope than it is to simply stand in place.

Forward momentum creates stability.

That’s what studies are for [Seth's Blog]

“Are you sure it’s going to work?”

That’s the wrong question to consider when proposing a study.

It’s also not helpful to say, “It’s unlikely to solve the problem.”

All the likely approaches have already been tried.

The useful steps are:

  1. Is there a problem worth solving?
  2. Is the expense of this test reasonable?
  3. Will the study cause significant damage?
  4. Of all the things we can test, is this a sensible one to try next?

Our fear of failure is real. It’s often so significant that we’d rather live with a problem than face the possibility that our new approach might be wrong.

If the problem is worth solving, it’s probably worth the effort and risk that the next unproven test will require.

[In this podcast, Dr. Jonathan Sackner-Bernstein talks with some patients and a doctor about his novel approach to Parkinson’s disease. Participants in the conversation bring up the conventional wisdom he’s challenging and share reasons why his theory probably won’t work. But none of the critics has a better alternative. The cost of the test is relatively low, and the stakes of the problem are quite high. There’s no clear answer. This is precisely what a study is for.]

What will it cost to test your solution to our problem? Okay, begin.

09:14

Man Bun [Penny Arcade]

New Comic: Man Bun

05:49

Girl Genius for Friday, March 06, 2026 [Girl Genius]

The Girl Genius comic for Friday, March 06, 2026 has been posted.

03:28

Antoine Beaupré: Wallabako retirement and Readeck adoption [Planet Debian]

Today I have made the tough decision of retiring the Wallabako project. I have rolled out a final (and trivial) 1.8.0 release which fixes the uninstall procedure and rolls out a bunch of dependency updates.

Why?

The main reason why I'm retiring Wallabako is that I have completely stopped using it. It's not the first time: for a while, I wasn't reading Wallabag articles on my Kobo anymore. But I had started working on it again about four years ago. Wallabako itself is about to turn 10 years old.

This time, I stopped using Wallabako because there's simply something better out there. I have switched away from Wallabag to Readeck!

And I'm also tired of maintaining "modern" software. Most of the recent commits on Wallabako are from renovate-bot. This feels futile and pointless. I guess it must be done at some point, but it also feels we went wrong somewhere there. Maybe Filippo Valsorda is right and one should turn dependabot off.

I did consider porting Wallabako to Readeck for a while, but there's a perfectly fine Koreader plugin that I've been pretty happy to use. I was worried it would be slow (because the Wallabag plugin is slow), but it turns out that Readeck is fast enough that this doesn't matter.

Moving from Wallabag to Readeck

Readeck is pretty fantastic: it's fast, it's lightweight, everything Just Works. All sorts of concerns I had with Wallabag are just gone: questionable authentication, questionable API, weird bugs, mostly gone. I am still looking for multiple tags filtering but I have a much better feeling about Readeck than Wallabag: it's written in Golang and under active development.

In any case, I don't want to throw shade at the Wallabag folks either. They did solve most of the issues I raised with them and even accepted my pull request. They have helped me collect thousands of articles for a long time! It's just time to move on.

The migration from Wallabag was impressively simple. The importer is well-tuned, fast, and just works. I wrote about the import in this issue, but it took about 20 minutes to import essentially all articles, and another 5 hours to refresh all the contents.

There are minor issues with Readeck which I have filed (after asking!):

But overall I'm happy and impressed with the result.

I'm also both happy and sad at letting go of my first (and only, so far) Golang project. I loved writing in Go: it's a clean language, fast to learn, and a beauty to write parallel code in (at the cost of a rather obscure runtime).

It would have been much harder to write this in Python, but my experience in Golang helped me think about how to write more parallel code in Python, which is kind of cool.

The GitLab project will remain publicly accessible, but archived, for the foreseeable future. If you're interested in taking over stewardship for this project, contact me.

Thanks Wallabag folks, it was a great ride!

02:49

Reading and writing emails in GNU Emacs with Gnus [Planet GNU]

At the 10th anniversary of my involvement in EmacsConf, I’m finally giving my first ever talk at the conference, for EmacsConf 2025. :) In this talk, I give a quick introduction to Gnus and show a basic configuration for reading and writing email with Gnus and Message.

You can watch the video below, or from the talk’s page on the EmacsConf 2025 wiki: https://emacsconf.org/2025/talks/gnus

Sorry, this embedded video will not work, because your web browser does not support HTML5 video.
[ please watch the video in your favourite streaming media player ]

The above video is provided with closed captions and a transcript — thanks, Sacha!

A commented copy of the init file from the video is provided below. Happy hacking!

;;; emacsconf-2025-gnus.el                  -*- lexical-binding: t -*-

;; This file is marked with CC0 1.0 Universal
;; and is dedicated to the public domain.

;; Note: this file uses the `setopt' macro introduced in Emacs 29
;; to customize the value of user options.  If you are using older
;; Emacsen, you may can use `customize-set-variable' or `setq'.

;;; Init / convenience

;; Initialize the package system.
(require 'package)
(package-initialize)

(setopt
 ;; Explicitly set `package-archives', in part to ensure https ones
 ;; are used, and also to have NonGNU ELPA on older Emacsen as well.
 package-archives
 '(("gnu" . "https://elpa.gnu.org/packages/")
   ("nongnu" . "https://elpa.nongnu.org/nongnu/")))

;; Download descriptions of available packages from the above
;; package archives.
(unless package-archive-contents
  (package-refresh-contents))

;; Install the keycast package if not already installed.
(dolist (package '(keycast))
  (unless (package-installed-p package)
    (package-install package)))

;; Enable keycast to show the current command and its binding in
;; the mode line, for the presentation.
(setopt keycast-mode-line-remove-tail-elements nil)
(when (fboundp #'keycast-mode-line-mode)
  (keycast-mode-line-mode 1))

;; Set a font with larger size for the presentation.
;; It requires that the Source Code Pro be installed on your
;; system.  Feel free to comment out or remove.
(when (display-graphic-p)
  (with-eval-after-load 'faces
    (let ((f "Source Code Pro Medium-15"))
      (set-face-attribute 'default nil :font f)
      (set-face-attribute 'fixed-pitch nil :font f))))

;; Inline function for expanding file and directory names inside
;; `user-emacs-directory'.  For example: (+emacs.d "gnus/")
(defsubst +emacs.d (path)
  "Expand PATH relative to `user-emacs-directory'."
  (expand-file-name
   (convert-standard-filename path) user-emacs-directory))

(keymap-global-set "C-c e e" #'eval-last-sexp)

;; Add the info directory from the GNU Emacs source repository to
;; the list of directories to search for Info documentation files.
;; Useful if you're using Emacs directly built from a source
;; repository, rather than installed on your system.
(with-eval-after-load 'info
  (setq
   Info-directory-list
   `(,@Info-directory-list
     ,(expand-file-name
       (convert-standard-filename "info/") source-directory)
     "/usr/share/info/")))

␌
;;; Gnus configuration

;; (info "(gnus) Don't Panic")

(keymap-global-set "C-c g" #'gnus)

(setopt
 user-full-name    "Gnus Fan Emacsian"
 user-mail-address "ec25gnus@kelar.org")

;; Tell Emacs we'd like to use Gnus and its Message integration
;; for reading and writing mail.
(setopt
 mail-user-agent 'gnus-user-agent
 read-mail-command #'gnus)

;; Consolidate various Gnus files inside a gnus directory in the
;; `user-emacs-directory'.
(setopt
 gnus-home-directory (+emacs.d "gnus/")
 gnus-directory      (+emacs.d "gnus/news/")
 message-directory   (+emacs.d "gnus/mail/")
 nndraft-directory   (+emacs.d "gnus/drafts/"))

(setopt ; don't bother with .newsrc, use .newsrc.eld instead
 gnus-save-newsrc-file nil
 gnus-read-newsrc-file nil)

;; Don't prompt for confirmation when exiting Gnus.
(setopt gnus-interactive-exit nil)

;; Configure two IMAP mail accounts.
(setopt
 gnus-select-method '(nnnil "")
 gnus-secondary-select-methods
 '((nnimap
    "ec25gnus"
    (nnimap-stream tls)
    (nnimap-address  "mail.kelar.org")
    ;; (nnimap-server-port 993) ; imaps
    (nnimap-authenticator plain)
    (nnimap-user "ec25gnus@kelar.org"))
   (nnimap
    "ec25work"
    (nnimap-stream tls)
    (nnimap-address "mail.kelar.org")
    ;; (nnimap-server-port 993) ; imaps
    (nnimap-authenticator plain)
    (nnimap-user "ec25work@kelar.org")
    ;; Archive messages into yearly Archive folders upon pressing
    ;; 'E' (for Expire) in the summary buffer.
    (nnmail-expiry-wait immediate)
    (nnmail-expiry-target nnmail-fancy-expiry-target)
    (nnmail-fancy-expiry-targets
     (("from" ".*" "nnimap+ec25work:Archive.%Y"))))))

;; `init-file-debug' corresponds to launching emacs with --debug-init
(setq nnimap-record-commands init-file-debug)

;; The "Sent" folder
(setopt gnus-message-archive-group "nnimap+ec25gnus:INBOX")

;;;; Group buffer

;; Always show INBOX groups even if they have no unread or ticked
;; messages.
(setopt gnus-permanently-visible-groups ":INBOX$")
;; Enable topic mode in the group buffer, for classifying groups.
(add-hook 'gnus-group-mode-hook #'gnus-topic-mode)

;;;; Article buffer

;; Display the following message headers in Article buffers,
;; in the given order.
(setopt
 gnus-sorted-header-list
 '("^From:"
   "^X-RT-Originator"
   "^Newsgroups:"
   "^Subject:"
   "^Date:"
   "^Envelope-To:"
   "^Followup-To:"
   "^Reply-To:"
   "^Organization:"
   "^Summary:"
   "^Abstract:"
   "^Keywords:"
   "^To:"
   "^[BGF]?Cc:"
   "^Posted-To:"
   "^Mail-Copies-To:"
   "^Mail-Followup-To:"
   "^Apparently-To:"
   "^Resent-From:"
   "^User-Agent:"
   "^X-detected-operating-system:"
   "^X-Spam_action:"
   "^X-Spam_bar:"
   "^Message-ID:"
   ;; "^References:"
   "^List-Id:"
   "^Gnus-Warning:"))

;;;; Summary buffer

;; Fine-tune sorting of threads in the summary buffer.
;; See: (info "(gnus) Sorting the Summary Buffer")
(setopt
 gnus-thread-sort-functions
 '(gnus-thread-sort-by-number
   gnus-thread-sort-by-subject
   gnus-thread-sort-by-date))

;;;; Message and sending mail

(setopt
 ;; Automatically mark Gcc (sent) messages as read.
 gnus-gcc-mark-as-read t
 ;; Configure posting styles for per-account Gcc groups, and SMTP
 ;; server for sending mail.  See: (info "(gnus) Posting Styles")
 ;; Also see sample .authinfo file provided below.
 gnus-posting-styles
 '(("nnimap\\+ec25gnus:.*"
    (address "ec25gnus@kelar.org")
    ("X-Message-SMTP-Method" "smtp mail.kelar.org 587")
    (gcc "nnimap+ec25gnus:INBOX"))
   ("nnimap\\+ec25work:.*"
    (address "ec25work@kelar.org")
    ("X-Message-SMTP-Method" "smtp dasht.kelar.org 587")
    (gcc "nnimap+ec25work:INBOX"))))

(setopt
 ;; Ask for confirmation when sending a message.
 message-confirm-send t
 ;; Wrap messages at 70 characters when pressing M-q or when
 ;; auto-fill-mode is enabled.
 message-fill-column 70
 ;; Forward messages (C-c C-f) as a proper MIME part.
 message-forward-as-mime t
 ;; Send mail using Emacs's built-in smtpmail library.
 message-send-mail-function #'smtpmail-send-it
 ;; Omit our own email address(es) when composing replies.
 message-dont-reply-to-names "ec25\\(gnus\\|work\\)@kelar\\.org"
 gnus-ignored-from-addresses message-dont-reply-to-names)

;; Unbind C-c C-s for sending mail; too easy to accidentally hit
;; instead of C-c C-d (save draft for later)
(keymap-set message-mode-map "C-c C-s" nil)
;; Display a `fill-column' indicator in Message mode.
(add-hook 'message-mode-hook #'display-fill-column-indicator-mode)
;; Enable Flyspell for on-the-fly spell checking.
(add-hook 'message-mode-hook #'flyspell-mode)

Sample ~/.authinfo file:

machine ec25gnus login ec25gnus@kelar.org password hunter2
machine ec25work login ec25work@kelar.org password badpass123
machine mail.kelar.org login ec25gnus@kelar.org password hunter2
machine dasht.kelar.org login ec25work@kelar.org password badpass123

Note that for purpose of storing credentials for use by Gnus’s select methods, the machine portions need to match the names we give our select methods when configuring gnus-secondary-select-methods, namely ec25gnus and ec25work in our example.

We also store a copy of the credentials for use by Emacs’s smtpmail when sending mail, where the machine must be the fully-qualified domain name (FQDN) of the SMTP server we specify with the X-Message-SMTP-Method header for each account by defining a corresponding rule for it in gnus-posting-styles.

Lastly, I recommend using an encrypted authinfo file by saving it as ~/.authinfo.gpg instead to avoid storing your credentials in plain text. If you set up Emacs’s EasyPG, it will seamlessly decrypt or encrypt the file using GPG when reading from or writing to it. Type C-h v auth-sources RET to see the documentation of the auth-sources variable for more details.

02:07

Into The Drink [QC RSS]

something's fishy

00:21

Thursday, 05 March

23:35

Meats and Cheeses [The Stranger]

After opening Outsider BBQ last March, self-taught pitmaster Onur Gulbay quickly built himself a cult following in Seattle. by Meg van Huygen

Hard to believe it’s been a whole year since Seattle, frequently bemoaned by Southerners as a barbecue wasteland, finally got some legit Texas-style barbecue. And made by a Turkish guy, no less. After opening Outsider BBQ last March, self-taught pitmaster Onur Gulbay quickly built himself a cult following with the authentic Central Texas-ass barbecue chops that he picked up while living in Austin. 

“I went to Franklin Barbecue and just fell in love,” Gulbay says, “and kept going back over and over, talking to the guys there, until I could learn how they were doing it.”

What started out as a pop-up, which the former IBM salesman ran from a portable smoker on wheels, re-manifested last year in the massive ex-Frelard Pizza Company space on Leary. Gulbay has since transformed the place into a sprawling smoked-meats compound, replete with fire pits, retractable garage-door walls, a play area for kids, a separate little house for his TWO gigantic smokers, and a huge outdoor beer garden. (Guess he learned that part from Texas, too. Oops, haha, it is cold here.) 

If this style and caliber of barbecue weren’t rare enough in the Northwest, Gulbay next-levels it with his gently Turkified versions of classic Southern sides: sumac-dusted potato salad, lemon–poppyseed coleslaw, a cinnamony rice pudding called sütlaç that’s similar to the American version except it's taken a ride in the smoker. The flavorful “street corn,” is a thick, creamy scoop of grilled esquites that’s loaded with fresh herbs and black pepper and shares architectural properties with Beecher’s mac. When asked what he puts it in, Gulbay pauses, then says, “Lots and lots of cheese. Like six cheeses.”

As for the meats, y’all can’t miss the snappy jalapeno-cheddar sausage, made in-house from pork and brisket trimmings, or the buttery meltaway brisket that disintegrates as soon as you breathe on it. Gulbay himself can’t get enough of the succulent beef rib, which is just flamboyantly enormous and always makes me think of the chunk of dino ribs that makes the runny footmobile fall over in the opener from The Flintstones. “My very favorite,” Gulbay proclaims. “It’s a whole meal by itself.” 

On Saturday, March 7, Outsider BBQ will be celebrating its first birthday with live music, specials, new menu items, and an all-day indoor/outdoor party. Guests should make sure to say hi to Gulbay, who is a goddang character and will be holding court all day. As our local barbecue prescriptivists bitch on Reddit about grill marks and bark tones, Gulbay’s creative take on a very pious category of American cuisine is at once faithful and playful, and it's refreshing as hell to see. It's also a great example of what makes Seattle’s restaurant scene so vivacious and unique. Something to celebrate for sure.

Said it before, but this town is a rough place to open a new restaurant, especially if you’re new to the area—and to say nothing of it being your first restaurant!—so a year in biz is no small feat. Congrats to Gulbay and the Outsider team, who are clearly elite insiders now. We’re so glad you’re here.

Local Music You Shouldn’t Miss [The Stranger]

New Albums From Sax Explorer Kate Olson and Ex-TAD Front Man Thomas Andrew Doyle
by Dave Segal

Kate Olson
So It Goes
(OA2)

Saxophonist/composer Kate Olson has excelled in Seattle’s jazz and experimental scenes for about 15 years as a solo artist, bandleader, and member of Syrinx Effect, Royal Room Collective Music Ensemble, and Battlestar Kalakala. She’s especially shown an affinity for minimalist works that exhibit a deep spirituality, à la Terry Riley, Pauline Oliveros, and Don Cherry. Olson’s last album, 2020’s Homeland, pushed her into new territory: funereal post-rock, industrial music recalling the Bug’s iciest and most ominous moments, and discombobulating IDM.

Olson returns to jazz on her new LP, So It Goes, joined by Conner Eisenmenger (trombone, trumpet), Tim Carey (electric bass, electric guitar), and Evan Woodle (drums, percussion). With Olson playing soprano sax, the album zips out of the gate with “Bumbling Thumbs Blues,” bustling bebop full of thrilling dynamics, with Woodle devoting acute attention to the tom-toms. Which makes the transition to the sly “Take Five” homage of “ShouldaCoulda” a brilliant change of pace. Olson finesses a quietly ecstatic and rococo solo in this utterly beguiling and introspective tune. The burrowing, mesmerizing bebop sorcery of “All Pear-Shaped” continues So It Goes’s hot streak.

But Olson also excels at cooler temperatures; her ballad game is strong. “Nominally Challenged” is beautiful, serpentine jazz for late nights or early mornings, while “Pink Mountain”—a delicate, bittersweet ballad—displays Olson’s playing at its most tender. Dedicated to Billy Pilgrim, protagonist of Kurt Vonnegut’s Slaughterhouse-Five, “So It Goes” is a languorous, melancholy ballad with scene stalwarts Wayne Horvitz on piano and Geoff Harper on double bass. And showing immaculate taste, Olson and company—with Horvitz and Harper again lending stellar support—do justice to the legend Alice Coltrane’s questing astral-jazz composition “Translinear Light,” the title track from her final studio album. Real recognize real.

Thomas Andrew Doyle
Twilight
(Incineration Ceremony)

It’s crazy that Thomas Andrew Doyle’s synth-based music from 2017 onward flies so far under the radar, even though it ranks among his best output. The man best known as the leader of Sub Pop grunge brutes TAD has undergone a radical transformation in this century, and maybe fans of that band and critics just can’t get their heads around this new and improved musician/composer.

These days, Doyle’s into creating soundtracks in search of film directors who revel in transporting viewers to profoundly disturbing places. Twilight is Doyle’s latest excursion into the vast bleak. The epic title track begins with a subdued, solemn organ drone poised between hope and distress, creating a paradoxical tension. Eventually, ceremonial male chants enter and lend a wafting gravitas to proceedings. It would sound infernally grand in a theater. “1 over 137” is a bass-heavy dirge of deep suspense, cut with fluid synth motifs that suggest an appreciation for Dune-loving keyboard sorcerer Bernard Szajner. On “Decimated,” Doyle coaxes out the interstellar eeriness of Brian Eno’s best ’80s ambient releases. The despairing drones of “Dormant Complexities” approximate the sound of E.M. Cioran’s brain waves as he was writing A Short History of Decay. Dedicated to Doyle’s late friend, and friend of the paper (and entire city), Bradley Sweek, Twilight epitomizes the art of darkness.

Seattle-area musicians can send music to NewSeattleMusic@thestranger.com for possible coverage.

23:28

Link [Scripting News]

On the other hand, it's hard to get Claude.ai to really apply itself to my own software. It likes to drive. Same with ChatGPT.

[1292] New Look, Old Maren [Twokinds]

Comic for March 5, 2026

22:49

Hardware hotplug events on Linux, the gory details [OSnews]

One day, I suddenly wondered how to detect when a USB device is plugged or unplugged from a computer running Linux. For most users, this would be solved by relying on libusb. However, the use case I was investigating might not actually want to do so, and so this led me down a poorly-documented rabbit hole.

↫ ArcaneNibble (or R)

And ArcaneNibble (or R) is taking you down with them.

Ticket Alert: Joji, Gorillaz, and More Seattle Events Going On Sale [The Stranger]

Plus, The Guess Who and More Event Updates for March 5
by EverOut Staff

We’re serving up another fresh batch of tickets. Lo-fi R&B singer Joji supports his recently released album, Piss in the Wind, at Climate Pledge this summer. English virtual band Gorillaz closes out the North American leg of their Mountain Tour in Seattle. Plus, “American Woman” rockers The Guess Who are takin’ it back on their reunion tour. Read on for details on those and other newly announced events, plus some news you can use.

ON SALE FRIDAY, MARCH 6

MUSIC

Belle & Sebastian: 30th Anniversary Tour, Performing "Tigermilk"
Neptune Theatre (Sat June 13)

Charley Crockett – Age of the Ram Tour
Northern Quest Resort & Casino (Wed July 15)

Concrete Boys
Neumos (Mon May 11)

22:14

The Big Idea: Randee Dawn [Whatever]

If everyone only wrote what they knew, how many books would we be deprived of? Author Randee Dawn has some concerns about the age-old advice, and suggests writers should get out of their comfort zone in the Big Idea for her newest novel, We Interrupt This Program.

RANDEE DAWN:

There are many phrases writers long to hear: Your book is a best-seller! Your book changed my life! Your book is getting a Netflix adaptation! Your book props open my screen door!

Maybe not that last one.

But if there’s one phrase writers are a little tired of hearing is this: Write what you know.

What does that even mean? For years, I thought it was reductionist and stupid. I write speculative fiction. Spec fic is about dragons or distant planets or zombies or dragons and zombies on distant planets. I have yet to encounter any of those things. But isn’t that what imagination is for? Make stuff up!

Write what you know is a rhetorical piece of advice that sends young writers off on the wrong path, and often confuses older ones. It explains why twenty-two year olds write memoirs. They don’t know anything but their own lives!

But it can have value. My first useful encounter with understanding write what you know came when I plumbed my entertainment journalism past – including time at a soap opera magazine – to write a goofy first novel, Tune in Tomorrow (helpfully given its own discussion in The Big Idea in 2022). I knew what backstage on TV and film sets looked like. I’d spoken to thousands of actors, producers, and directors. It wasn’t so far a leap to imagine how things might be different if magical creatures were running things. 

Then it came time to write the next story in the Tune-iverse. I’d used up a lot of Stuff I Knew. So what could come next to keep things interesting? 

That was when I discovered that the advice isn’t stupid. It’s just not the only advice that matters. Writing what you know can – pick your metaphor – give you a frame, a recipe, or a direction to follow.

But writing what hurts gives you substance. Writing what hurts gets you into the subcutaneous zone. 

With We Interrupt this Program (the next, also standalone, novel in my Tune-iverse), I tried to picture what the rest of the fae entertainment universe – run by the Seelie Court Network, of course – would look like. I imagined whole villages run by fae, populated by humans full-time, whose lives fit into neat little tropey stories. What if all the Hallmark movies were shot in the cutest, sweetest, village ever? What if there was a whole burg populated with humans who’d pissed the fae off and were being punished? What if a seaside town existed where a gray-haired older lady author solved cozy mysteries? 

The latter one gave me Winnie, an older woman whose cozy mysteries about her TROPE Town neighbors were turned into movies for SCN. But Seaview Haven is in trouble when we meet Winnie, and she discovers she’ll have to write a really good story to fix matters. So she writes about a love affair with the town’s Seelie Showrunner/Mayor/Director.

But those who vet it say it isn’t good enough. It’s nice. She wrote what she knew. Then she’s told to write what’s hard.

The novel took me by surprise here. I hadn’t planned to make her write two important stories. The love story should be enough. But it was only good. It wasn’t great. Despite being supernatural, it felt mundane. Tropey.

In going deeper to find Winnie a hard story, I discovered I already had one based on events in my real life. I gave them to her. Sure, it’s about love. But it’s also about betrayal and writerly jealousy, the kind delivered with a stiletto and not a butcher knife. Frankly, I’m a little embarrassed it’s in there. It’s not an epic awfulness. I didn’t commit a crime. 

Probably. 

And in giving it to Winnie, the story worked for me. When she unveils her personal, painful moment, it folds into the story as if I’d planned it. We Interrupt remains slapsticky, punny, and full of lunatic moments. Hopefully, though, that’s why this moment – the hurtful story – hits the hardest.

Readers can sense when we’ve gone deep, and when we skate the surface. A writer always has to find a way to squint at their latest creation and ask if they’ve gone deep enough to make it hurt, no matter what the genre is. That’s what – if I’ve done it right – it means to stick the landing.

So let’s look at that old hoary advice once more. Yes, write what you know. 

But don’t stop there. 

After you figure out what you know, figure out what’s hard. What hurts. Pull out the stiletto, not the butcher knife … and get cutting. 


We Interrupt This Program: Amazon|Barnes & Noble|Bookshop

Author socials: Website|Instagram|Facebook

22:00

New Oracle Solaris CBE release released [OSnews]

Oracle’s Solaris 11 basically comes in two different flavours: the SRU (Support Repository Update) releases for commercial Oracle customers, and the CBE (Common Build Environment) releases, available to everyone. We’ve covered the last few SRU releases, and now it’s time for a new CBE release.

We first introduced the Oracle Solaris CBE in March 2022 and we released an updated version in May 2025. Now, as Oracle Solaris keeps on evolving, we’ve released the latest version of our CBE. With the previous release Alan and Jan had compiled a list to cover all the changes in the three years since the first CBE release. This time, because it’s relatively soon after the last release we are opting to just point you to the what’s new blogs on the feature release SRUs Oracle Solaris 11.4 SRU 84, Oracle Solaris 11.4 SRU 87, and Oracle Solaris 11.4 SRU 90. And of course you can always go to the blogs by Joerg Moellenkamp and Marcel Hofstetter who have excellent series of articles that show how you can use the Oracle Solaris features.

↫ Joost Pronk van Hoogeveen at the Oracle Solaris Blog

You can update your existing installation with a pkg update, or do a fresh insrtall with the new CBE images.

Night Moves [The Stranger]

Inside a Mahjong Social Club
by Michael Wong

Seattle’s hottest nightclub doesn’t have velvet ropes, bottle service, or a bouncer. Instead, it has folding tables. It has name tags. It has four people to a table, all playing mahjong. A year ago, this kicked off with two borrowed sets. Tonight, Emerald City Tile Club is standing room only.

An Unexpected Friday Night
On a recent Friday night, when I’d usually be confronting my shortcomings as both a home cook and a human, I instead found myself craving connection. For many these days, “socializing” means forwarding each other Reels… and not replying. Which is why it felt somewhat revolutionary to get dressed, hop in my car, and brave the parking situation of Capitol Hill. All to play mahjong with strangers.

I was at Stoup Brewing wearing a name tag, in a small room upstairs—high above the Carhartt-clad product managers and their Patagonia-donning dogs. The room was rocking, and it felt like a fashion show: gold and jade jewelry brushing against Chrome Hearts hoodies, ruched halter tops, and mock neck sweaters. Perfect mahjong fits: dressed for a game their grandparents played, styled like they might end up at a warehouse party after.

Fifteen tables were in play and not one empty. At some, the mood was loose, alternating between silly and flirtatious. At others, players leaned in without speaking, eyes fixed on the pile of engraved ivory tiles in front of them, focused like they were refining macrodata in Severance. Hong Kong, Taiwanese, and Filipino gameplay ensued, with rule sheets open between beer glasses. Onlookers, myself included, crowded around especially interesting games like a Vegas craps table.

I met a white man celebrating his 26th birthday wearing a magnificent custom felt crown like a malevolent mahjong monarch. I dapped him up. At another table, I saw a guy on crutches and another with a boot on. People planned their night around this event—insurance claims included. In the middle of Seattle’s winter, here were over a hundred people voluntarily sitting knee to knee, Labubu to Labubu, for hours, all sharing the understanding that if you sit down long enough, something great might happen.

Community Is Table Stakes
At the center of this room—though he would probably object to that phrasing—was Sean Herrera, the humble proprietor of Emerald City Tile Club.

A year ago, almost to the date, Sean was sipping a beer at Stoup, contemplating his future while doing trivia. He looked up to see folks playing board games, and the idea for Emerald City Tile Club formed all at once. He envisioned an accessible and welcoming social night surrounding the game his dad taught him to play. As a Filipino kid growing up in Alabama, Sean used mahjong as a magnet to find his people. He parlayed that energy when he moved to Seattle, hosting small mahjong nights with friends during COVID. Then they stopped being small. “It got too big at my place,” Sean told me, yelling over the DJs. “And I was like, how do I transform this into something bigger than myself?”

Around that time, he noticed mahjong social nights taking off in New York and Los Angeles, with editorial shots of young Asians framing the game as cool again. Some of the clubs in LA even charged membership or event fees, but that never sat right with Sean. “I don’t want someone moving to Seattle thinking they have to pay to meet friends,” he said. “I hate the idea of having a physical barrier to coming in and hanging out.”

When Sean decided to pitch Stoup on a mahjong night, he went full-out honor student. He shared MLA citations on the resurgence of mahjong among Asian American youth. He included a deck with mockups of attendance. He made a business case for foot traffic and sales. He said please. Stoup obliged, and ECTC was born. Forty people showed up to night one, blowing Sean away and earning more buy-in from Stoup. Tonight, and most nights, ECTC is hosting hundreds of folks.

“I hear about people meeting here and then going on dates,” Sean told me. “Someone came up to me and was like, ‘I met my girl here.’” He laughed, still slightly stunned by it. “I see people hanging out elsewhere and I’m like, ‘I didn’t know y’all were friends.’ And they’re like, ‘Oh, we met through ECTC.’ That’s crazy.”

One night, walking through Capitol Hill, he overheard a group of 20-somethings ahead of him debating whether they were going to “mahjong night” that week. They didn’t know he was behind them. “That’s when I knew this was real.”

Flipping the Script
For decades, mahjong lived in kitchens and garages, in the background of family parties, in rooms that smelled faintly of vapor rub and pork. It was something you inherited. A game you aged into. Now it’s something people line up for.

Across America, mahjong nights are quietly filling restaurants and backrooms. Young people are showing up dressed for a night out and are learning that the romantic prospects are better at the mahjong table than the bars. What used to signal retirement now signals arrival. “The traditional view about mahjong,” Sean said, “is that it’s an old man’s game.” He gestured to the brimming room. “Here in Seattle, we’re flipping that script.”

It’s definitely happening in Seattle, headlined by ECTC and supported by budding nights including Mahjong Mondays at Kilig and QT Mahjong Nights—a community for queer/BIPOC folks to learn mahjong together. At each of these events, community is table stakes, but knowing how to play is not.

So Why Now?
Part of the appeal is structural. Mahjong is analog. You can’t scroll through it, you can’t multitask. In a time where you see more AI slop on your timeline than pictures of actual human beings, the youth yearn for something real. And mahjong provides, not only with tangible tiles and real-life conversations, but also an invitation to unplug. To lean in. To pay attention. In an economy of distraction, that feels radical.

But part of it is cultural. For a generation of Asian Americans, mahjong is less about preserving tradition and more about reclaiming it. It’s taking something your parents played and deciding it belongs in public. It belongs under DJ lights. It belongs in breweries.

It belongs to us.

Same Time Next Week
Back at Stoup, my wife had just won her first game, thanks to three new friends she just met, thrilled to be beaten by their new padawan. The DJs were getting crunk, backed by the comforting cacophony of shuffling tiles. Someone just found a roommate.

In a city designed to keep you alone—in your car, in your apartment, in your feed—the kids are choosing something older. Something slower. Something you can’t swipe away.

I stepped outside into the cold and immediately saw three people I recognized from upstairs arguing about game strategies on the sidewalk.

They’ll be back next week. So will I. 

21:14

Vincent Bernat: Automatic Prometheus metrics discovery with Docker labels [Planet Debian]

Akvorado, a network flow collector, relies on Traefik, a reverse HTTP proxy, to expose HTTP endpoints for services implemented in a Docker Compose setup. Docker labels attached to each service define the routing rules. Traefik picks them up automatically when a container starts. Instead of maintaining a static configuration file to collect Prometheus metrics, we can apply the same approach with Grafana Alloy, making its configuration simpler.

Traefik & Docker

Traefik listens for events on the Docker socket. Each service advertises its configuration through labels. For example, here is the Loki service in Akvorado:

services:
  loki:
    # …
    expose:
      - 3100/tcp
    labels:
      - traefik.enable=true
      - traefik.http.routers.loki.rule=PathPrefix(`/loki`)

Once the container is healthy, Traefik creates a router forwarding requests matching /loki to its first exposed port. Colocating Traefik configuration with the service definition is attractive. How do we achieve the same for Prometheus metrics?

Metrics discovery with Alloy

Grafana Alloy, a metrics collector that can scrape Prometheus endpoints, includes a discovery.docker component. Just like Traefik, it connects to the Docker socket.1 With a few relabeling rules, we can teach it to use Docker labels to locate and scrape metrics.

We define three labels on each service:

  • metrics.enable set to true enables metrics collection,
  • metrics.port specifies the port exposing the Prometheus endpoint, and
  • metrics.path specifies the path to the metrics endpoint.

If there is more than one exposed port, metrics.port is mandatory, otherwise it defaults to the only exposed port. The default value for metrics.path is /metrics. The Loki service from earlier becomes:

services:
  loki:
    # …
    expose:
      - 3100/tcp
    labels:
      - traefik.enable=true
      - traefik.http.routers.loki.rule=PathPrefix(`/loki`)
      - metrics.enable=true
      - metrics.path=/loki/metrics

Alloy’s configuration is split into four parts:

  1. discover containers through the Docker socket,
  2. filter and relabel targets using Docker labels,
  3. scrape the matching endpoints, and
  4. forward the metrics to Prometheus.

Discovering Docker containers

The first building block discovers running containers:

discovery.docker "docker" {
  host             = "unix:///var/run/docker.sock"
  refresh_interval = "30s"
  filter {
    name   = "label"
    values = ["com.docker.compose.project=akvorado"]
  }
}

This connects to the Docker socket and lists containers every 30 seconds.2 The filter block restricts discovery to containers belonging to the akvorado project, avoiding interference with unrelated containers on the same host. For each discovered container, Alloy produces a target with labels such as __meta_docker_container_label_metrics_port for the metrics.port Docker label.

Relabeling targets

The relabeling step filters and transforms raw targets from Docker discovery into scrape targets. The first stage keeps only targets with metrics.enable set to true:

discovery.relabel "prometheus" {
  targets = discovery.docker.docker.targets

  // Keep only targets with metrics.enable=true
  rule {
    source_labels = ["__meta_docker_container_label_metrics_enable"]
    regex         = `true`
    action        = "keep"
  }

  // …
}

The second stage overrides the discovered port when we define metrics.port:

// When metrics.port is set, override __address__.
rule {
  source_labels = ["__address__", "__meta_docker_container_label_metrics_port"]
  regex         = `(.+):\d+;(.+)`
  target_label  = "__address__"
  replacement   = "$1:$2"
}

Next, we handle containers in host network mode. When __meta_docker_network_name equals host, the address is rewritten to host.docker.internal instead of localhost:3

// When host networking, override __address__ to host.docker.internal.
rule {
  source_labels = ["__meta_docker_container_label_metrics_port", "__meta_docker_network_name"]
  regex         = `(.+);host`
  target_label  = "__address__"
  replacement   = "host.docker.internal:$1"
}

The next stage derives the job name from the service name, stripping any numbered suffix. The instance label is the address without the port:

rule {
  source_labels = ["__meta_docker_container_label_com_docker_compose_service"]
  regex         = `(.+)(?:-\d+)?`
  target_label  = "job"
}
rule {
  source_labels = ["__address__"]
  regex         = `(.+):\d+`
  target_label  = "instance"
}

If a container defines metrics.path, Alloy uses it as a path. Otherwise, it defaults to /metrics:

rule {
  source_labels = ["__meta_docker_container_label_metrics_path"]
  regex         = `(.+)`
  target_label  = "__metrics_path__"
}
rule {
  source_labels = ["__metrics_path__"]
  regex         = ""
  target_label  = "__metrics_path__"
  replacement   = "/metrics"
}

Scraping and forwarding

With the targets properly relabeled, scraping and forwarding are straightforward:

prometheus.scrape "docker" {
  targets         = discovery.relabel.prometheus.output
  forward_to      = [prometheus.remote_write.default.receiver]
  scrape_interval = "30s"
}

prometheus.remote_write "default" {
  endpoint {
    url = "http://prometheus:9090/api/v1/write"
  }
}

prometheus.scrape periodically fetches metrics from the discovered targets. prometheus.remote_write sends them to Prometheus.

Built-in exporters

Some services do not expose a Prometheus endpoint. Redis and Kafka are common examples. Alloy ships built-in Prometheus exporters that query these services and expose metrics on their behalf.

prometheus.exporter.redis "docker" {
  redis_addr = "redis:6379"
}
discovery.relabel "redis" {
  targets = prometheus.exporter.redis.docker.targets
  rule {
    target_label = "job"
    replacement  = "redis"
  }
}
prometheus.scrape "redis" {
  targets         = discovery.relabel.redis.output
  forward_to      = [prometheus.remote_write.default.receiver]
  scrape_interval = "30s"
}

The same pattern applies to Kafka:

prometheus.exporter.kafka "docker" {
  kafka_uris = ["kafka:9092"]
}
discovery.relabel "kafka" {
  targets = prometheus.exporter.kafka.docker.targets
  rule {
    target_label = "job"
    replacement  = "kafka"
  }
}
prometheus.scrape "kafka" {
  targets         = discovery.relabel.kafka.output
  forward_to      = [prometheus.remote_write.default.receiver]
  scrape_interval = "30s"
}

Each exporter is a separate component with its own relabeling and scrape configuration. The job label is set explicitly since there is no Docker metadata to derive it from.


With this setup, adding metrics to a new service with a Prometheus endpoint is a few-label change in docker-compose.yml, just like adding a Traefik route. Alloy picks it up automatically. You can set up something similar with another discovery method, like discovery.kubernetes, discovery.scaleway, or discovery.http. 🩺


  1. Both Traefik and Alloy require access to the Docker socket, which grants root-level access to the host. A Docker socket proxy mitigates this by exposing only the read-only API endpoints needed for discovery. ↩︎

  2. Unlike Traefik, which watches for events, Grafana Alloy polls the container list at regular intervals—a behavior inherited from Prometheus. ↩︎

  3. The Alloy service needs extra_hosts: ["host.docker.internal:host-gateway"] in its definition. ↩︎

The great license-washing has begun [OSnews]

In the world of open source, relicensing is notoriously difficult. It usually requires the unanimous consent of every person who has ever contributed a line of code, a feat nearly impossible for legacy projects. chardet, a Python character encoding detector used by requests and many others, has sat in that tension for years: as a port of Mozilla’s C++ code it was bound to the LGPL, making it a gray area for corporate users and a headache for its most famous consumer.

Recently the maintainers used Claude Code to rewrite the whole codebase and release v7.0.0, relicensing from LGPL to MIT in the process. The original author, a2mark, saw this as a potential GPL violation.

↫ Tuan-Anh Tran

Everything about this feels like a license violation, and in general a really shit thing to do. At the same time, though, the actual legal situation, what lawyers and judges care about, is entirely unsettled and incredibly unclear. I’ve been reading a ton of takes on what happened here, and it seems nobody has any conclusive answers, with seemingly valid arguments on both sides.

Intuitively, this feels deeply and wholly wrong. This is the license-washing “AI” seems to be designed for, so that proprietary vendors can take code under copyleft licenses, feed it into their “AI” model, and tell it to regurgitate something that looks just different enough so a new, different license can be applied. Tim takes Jim’s homework. How many individual words does Tim need to change – without adding anything to Jim’s work – before it’s no longer plagiarism?

I would argue that no matter how many synonyms and slight sentence structure changes Tim employs, it’s still a plagiarised work.

However, what it feels like to me is entirely irrelevant when laws are involved, and even those laws are effectively irrelevant when so much money is riding on the answers to questions like these. The companies who desperately want this to be possible and legal are so wealthy, so powerful, and sucked up to the US government so hard, that whatever they say might very well just become law.

“AI” is the single-greatest coordinated attack on open source in history, and the open source world would do well to realise that.

Emerald City Comic Con Has Connections to ICE [The Stranger]

A group of unhappy cosplayers penned a petition to Emerald City Comic Con's parent company asking them to do something about it. by Nathalie Graham

There’s a cloud over Emerald City Comic Con (ECCC) this year and, no, it’s not pissing rain. It’s pissing ICE.

Back in January, con-goers discovered that ECCC’s parent company, ReedPop—which acquired the con in 2015 and runs a variety of cons including  New York City Comic Con and BookCon—has a not-so-distant connection to the immigration enforcement agency.

The problem lies in a rotten, corporate family tree. Reed Pop is part of the entertainment group RX which is owned by RELX, and RELX owns LexisNexis, a data broker that holds a $22.1 million contract to be ICE’s precogs, helping the agency track people who may potentially commit a crime (and their cars, according to The Intercept) before they’ve actually broken the law.

So a group of unhappy cosplayers penned a petition asking Reedpop, which purports to “promote inclusion and diversity,” to force their parent company to divest from LexisNexis. ReedPop responded with a boilerplate statement, saying “RX, ReedPop and our event brands operate independently from other RELX businesses on an arm's length basis. RX, ReedPop and our event brands do not sell any information or data to the U.S. Department of Homeland Security or U.S. Immigration and Customs Enforcement.”

The petition reads: "How can event attendees feel safe, supported, or included when they are deliberately choosing to support the equivalent of the Empire in Star Wars, the Fire Nation in Avatar: The Last Airbender, and other oppressive forces that fans consistently support the dismantling of on-screen and in the pages?”

Elizabeth Sweet, a Korean immigrant known in the cosplay world as Cosmic Reys, co-organized the petition with her friend group of cosplayers and Romantasy lovers (Fourth Wing, A Court of Thorns and Roses, the fanfiction that warped your sexuality) that Mallory Shoemaker, a Disney cosplayer, and Jenna Karr, who primarily cosplays romantasy book characters. (Sidenote, while this group doesn’t have a name, they’ve done panels together as The Bookish Baddies).

Shoemaker (left), Karr, and Sweet think revolutions aren't just for sexy book protagonists. 

They wanted to send a message that “Seattle does not eff with ICE,” Sweet says, omitting the cuss word. Nearly 1,300 have signed since late January, and the Baddies have since written to electeds like Mayor Katie Wilson.

Though they aren’t advertising it, they’re tying ECCC’s relationship with ICE into their planned “Smash or Pass” panel about sexy Romantasy characters and tropes.

It’ll be much, much more about fascism than a steamy book panel usually would be (less monsterfucking, more fucking monsters). Sweet gave an example: “We find it attractive when the heroes we root for may have wings or horns or something, but what’s sexier is what they’re standing up for.”

And another: “A smashable trait is standing up for what you believe in and is advocating strongly for critiquing systems of power.”

“We’re putting pressure on our local officials, our city, and reminding nerds, ‘You could be the hero in the story that you're reading about,” Shoemaker says. “You could be Rey, you could be Katniss.”

20:28

The mystery of the posted message that was dispatched before reaching the main message loop [The Old New Thing]

A customer had a program that created a window, then posted a message to it. They were surprised to find that the message was dispatched too soon. Specifically, it was dispatched before the program reached its main message loop, which is a problem because there is other preparatory work that happens after the window is created but before the program reaches its main message loop, and the premature dispatch of the posted message is causing the message handler to do things before all the preparatory work is completed.

The customer was under the impression that posted messages aren’t dispatched until the main message loop starts processing them. Why is the posted message being dispatched too soon, and what can they do to fix it?

You have all the clues to solve the mystery in their problem description.

First, we get to dispel the customer’s misconception. There is no rule that says that posted messages wait for the main message loop to process and dispatch them. Posted messages are dispatched whenever anybody calls Get­Message or Peek­Message to retrieve the posted message, and then passes that posted message to the Dispatch­Message function. Anybody could perform these operations; it doesn’t have to be the main message loop.

Indeed, the system doesn’t know which message loop is your “main” message loop. It’s not like the system finds the calling code, reverse-compiles it, does semantic analysis, and then says, “Aha, I think this one is the main message loop.” (Indeed, I’ve written programs where there is no “main” message loop.)

The clue here is that they say that they have “preparatory work”.

I bet that some of their preparatory work goes into a little message loop. Maybe it posts a message to another window and pumps messages while waiting for a response. (For example, it might be doing DDE.) Or maybe it makes a cross-process COM call, because cross-process COM calls from single-threaded apartments pump messages while waiting for the call to complete.

The customer could confirm this theory by setting a breakpoint on their message handler and taking a stack trace to see what call they are making that is leading to messages being pumped.

The fix is not to post the message until all the preparations are complete. In other words, to prevent the message from arriving too soon, don’t post it too soon.

Bonus reading: Why are my posted messages getting lost when the user drags my window around?

The post The mystery of the posted message that was dispatched before reaching the main message loop appeared first on The Old New Thing.

20:07

Rust 1.94.0 released [LWN.net]

Version 1.94.0 of the Rust language has been released. Changes include array windows (an iterator for slices), some Cargo enhancements, and a number of newly stabilized APIs.

A GitHub Issue Title Compromised 4,000 Developer Machines (grith.ai) [LWN.net]

The grith.ai blog reports on an LLM prompt-injection vulnerability that led to 4,000 installations of a compromised version of the Cline utility.

For the next eight hours, every developer who installed or updated Cline got OpenClaw - a separate AI agent with full system access - installed globally on their machine without consent. Approximately 4,000 downloads occurred before the package was pulled.

The interesting part is not the payload. It is how the attacker got the npm token in the first place: by injecting a prompt into a GitHub issue title, which an AI triage bot read, interpreted as an instruction, and executed.

Pluralistic: Blowtorching the frog (05 Mar 2026) executive-dysfunction [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



Elon Musk wielding a flamethrower; he is roasting the snout of a giant frog

Blowtorching the frog (permalink)

Back in 2018, the Singletrack blog published a widely read article explaining the lethal trigonometry of a UK intersection where drivers kept hitting cyclists:

https://singletrackworld.com/2018/01/collision-course-why-this-type-of-road-junction-will-keep-killing-cyclists/

There are lots of intersections that are dangerous for cyclists, of course, but what made Ipsley Cross so lethal was a kind of eldritch geometry that let the cyclist and the driver see each other a long time before the collision, while also providing the illusion that they were not going to collide, until an instant before the crash.

This intersection is an illustration of a phenomenon called "constant bearing, decreasing range," which (the article notes) had long been understood by sailors as a reason that ships often collide. I'm not going to get into the trigonometry here (the Singletrack article does a great job of laying it out).

I am, however, going to use this as a metaphor: there is a kind of collision that is almost always fatal because its severity isn't apparent until it is too late to avert the crash. Anyone who's been filled with existential horror at the looming climate emergency can certainly relate.

The metaphor isn't exact. "Constant bearing, decreasing range" is the result of an optical illusion that makes it seem like things are fine right up until they aren't. Our failure to come to grips with the climate emergency is (partly‡) caused by a different cognitive flaw: the fact that we struggle to perceive the absolute magnitude of a series of slow, small changes.

‡The other part being the corrupting influence of corporate money in politics, obviously

This is the phenomenon that's invoked in the parable of "boiling a frog." Supposedly, if you put a frog in a pot of water at a comfortable temperature and then slowly warm the water to boiling, the frog will happily swim about even as it is cooked alive. In this metaphor, the frog can only perceive relative changes, so all that it senses is that the water has gotten a little warmer, and a small change in temperature isn't anything to worry about, right? The fact that the absolute change to the water is lethal does not register for our (hypothetical) frog.

Now, as it happens, frogs will totally leap clear of a pot of warming water when it reaches a certain temperature, irrespective of how slowly the temperature rises. But the metaphor persists, because while it does not describe the behavior of frogs in a gradually worsening situation, it absolutely describes how humans respond to small, adverse changes in our environment.

Take moral compromises: most of us set out to be good people, but reality demands small compromises to our ethics. So we make a small ethical compromise, and then before long, circumstances demand another compromise, and then another, and another, and another. Taken in toto, these compromises represent a severe fall from our personal standards, but so long as they are dripped out in slow and small increments, too often we rationalize our way into them: each one is only a small compromise, after all:

https://pluralistic.net/2020/02/19/pluralist-19-feb-2020/#thinkdifferent

Back to the climate emergency: for the first 25 years after NASA's James Hansen testified before Congress about "global heating," the changes to our world were mostly incremental: droughts got a little worse, as did floods. We had a few more hurricanes. Ski seasons got shorter. Heat waves got longer. Taken individually, each of these changes was small enough for our collective consciousness to absorb as within the bounds of normalcy, or, at worst, just a small worsening. Sure, there could be a collision on the horizon, but it wasn't anything urgent enough to justify the massive effort of decarbonizing our energy and transportation:

https://locusmag.com/feature/cory-doctorow-the-swerve/

It's not that we're deliberately committing civilizational suicide, it's just that slow-moving problems are hard to confront, especially in a world replete with fast-moving, urgent problems.

But crises precipitate change:

https://www.youtube.com/watch?v=FrEdbKwivCI

Before 2022, Europe was doing no better than the rest of the world when it came to confronting the climate emergency. Its energy mix was still dominated by fossil fuels, despite the increasing tempo of wildfires and floods and the rolling political crises touched off by waves of climate refugees. These were all dire and terrifying, but they were incremental, a drip-drip-drip of bad and worsening news.

Then Putin invaded Ukraine, and the EU turned its back on Russian gas and oil. Overnight, Europe was plunged into an urgent energy crisis, confronted with the very real possibility that millions of Europeans would shortly find themselves shivering in the dark – and not just for a few nights, but for the long-foreseeable future.

At that moment, the slow-moving crisis of the climate became the Putin emergency. The fossil fuel industry – one of the most powerful and corrupting influences in Brussels and around the world – was sidelined. Europe raced to solarize. In three short years, the continent went from decades behind on its climate goals to a decade ahead on them:

https://pluralistic.net/2025/10/11/cyber-rights-now/#better-late-than-never

Putin could have continued to stage minor incursions on Ukraine, none of them crossing any hard geopolitical red lines, and Europe would likely have continued to rationalize its way into continuing its reliance on Russia's hydrocarbon exports. But Putin lacked the patience to continue nibbling away at Ukraine. He tried to gobble it all down at once, and then everything changed.

There is a sense, then, in which Putin's impatient aggression was a feature, not a bug. But for Putin's lack of executive function, Ukraine might still be in danger of being devoured by Russia, but without Europe taking any meaningful steps to come to its aid – and Europe's solar transition would still be decades behind schedule.

Enshittification is one of those drip-drip-drip phenomena, too. Platform bosses have a keen appreciation of how much value we deliver to one another – community, support, mutual aid, care – and they know that so long as we love each other more than we hate the people who own the platforms, we'll likely stay glued to them. Mark Zuckerberg is a master of "twiddling" the knobs on the back-ends of his platforms, announcing big, enshittifying changes, and then backing off on them to a level that's shittier than it used to be, but not as shitty as he'd threatened:

https://pluralistic.net/2023/02/19/twiddler/

Zuck is a colossal asshole, a man who founded his empire in a Harvard dorm room to nonconsensually rate the fuckability of his fellow undergrads, a man who knowingly abetted a genocide, a man who cheats at Settlers of Catan:

https://pluralistic.net/2025/04/23/zuckerstreisand/#zdgaf

But despite all these disqualifying personality defects, Mark Zuckerberg has one virtue that puts him ahead of his social media competitor Elon Musk: Zuck has a rudimentary executive function, and so he is capable of backing down (sometimes, temporarily) from his shittiest ideas.

Contrast that with Musk's management of Twitter. Musk invaded Twitter the same year Putin invaded Ukraine, and embarked upon a string of absolutely unhinged and incontinent enshittificatory gambits that lacked any subtlety or discretion. Musk didn't boil the frog – he took one of his flamethrowers to it.

Millions of people were motivated to hop out of Musk's Twitter pot. But millions more – including me – found ourselves mired there. It wasn't that we liked Musk's Twitter, but we had more reasons to stay than we had to go. For me, the fact that I'd amassed half a million followers since some old pals messaged me to say they'd started a new service called "Twitter" meant that leaving would come at a high price to my activism and my publishing career.

But Musk kept giving me reasons to reassess my decision to stay. Very early into the Musk regime, I asked my sysadmin Ken Snider to investigate setting up a Bluesky server that I could move to. I was already very active on Mastodon, which is designed to be impossible to enshittify the way Musk had done to Twitter, because you can always move from one Fediverse server to another if the management turns shitty:

https://pluralistic.net/2022/12/23/semipermeable-membranes/

But for years, Bluesky's promise of federation remained just that – a promise. Technically, its architecture dangled the promise of multiple, independent Bluesky servers, but practically, there was no way to set this up:

https://pluralistic.net/2023/08/06/fool-me-twice-we-dont-get-fooled-again/

But – to Bluesky's credit – they eventually figured it out, and published the tools and instructions to set up your own Bluesky servers. Ken checked into it, and told me that it was all do-able, but not until a planned hardware upgrade to the Linux box he keeps in a colo cage in Toronto was complete. That upgrade happened a couple months ago, and yesterday, Ken let me know that he'd finished setting up a Bluesky server, just for me. So now I'm on Bluesky, at @doctorow.pluralistic.net:

https://bsky.app/profile/doctorow.pluralistic.net

I am on Bluesky, the service, but I am not a user of Bluesky, the company. That means that I'm able to interact with Bluesky users without clicking through Bluesky's abominable terms of service, through which you permanently surrender your right to sue the company (even if you later quit Bluesky and join another server!):

https://pluralistic.net/2025/08/15/dogs-breakfast/#by-clicking-this-you-agree-on-behalf-of-your-employer-to-release-me-from-all-obligations-and-waivers-arising-from-any-and-all-NON-NEGOTIATED-agreements

Remember: I knew and trusted the Twitter founders and I still got screwed. It's not enough for the people who run a service to be good people – they also have to take steps to insulate themselves (and their successors) from the kind of drip-drip-drip rationalizations that turn a series of small ethical waivers into a cumulative avalanche of pure wickedness:

https://pluralistic.net/2024/12/14/fire-exits/#graceful-failure-modes

Bluesky's "binding arbitration waiver" does the exact opposite: rather than insulating Bluesky's management from their own future selves' impulse to do wrong, a binding arbitration waiver permanently insulates Bluesky from consequences if (when) they yield the temptation to harm their users.

But Bluesky's technical architecture offers a way to eat my cake and have it, too. By setting up a Bluesky (the service) account on a non-Bluesky (the company) server, I can join a social space that has lots of people I like, and lots of interesting technical innovations, like composable moderation, without submitting to the company's unacceptable terms of service:

https://bsky.social/about/blog/4-13-2023-moderation

If Twitter was on the same slow enshittification drip-drip-drip of the pre-Musk years, I might have set up on Bluesky and stayed on Twitter. But thanks to Musk and his frog blowtorch, I'm able to make a break. For years now, I have posted this notice to Twitter nearly every day:

Twitter gets worse every single day. Someday it will degrade beyond the point of usability. The Fediverse is our best hope for an enshittification-resistant alternative. I'm @pluralistic@mamot.fr.

Today, I am posting a modified version, which adds:

If you'd like to follow me on Bluesky, I'm @doctorow.pluralistic.net. This is the last thread I will post to Twitter.

Crises precipitate change. All things being equal, the world would be a better place without Vladimir Putin or Elon Musk or Donald Trump in it. But these incontinent, impatient, terrible men do have a use: they transform slow-moving crises that are too gradual to galvanize action into emergencies that can't be ignored. Putin pushed the EU to break with fossil fuels. Musk pushed millions into federated social media. Trump is ushering in a post-American internet:

https://pluralistic.net/2026/01/01/39c3/#the-new-coalition

If you're reading this on Twitter, this is the long-promised notice that I'm done here. See you on the Fediverse, see you on Bluesky – see you in a world of enshittification-resistant social media.

It's been fun, until it wasn't.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago Waxy threatened with a lawsuit by Bill Cosby over “House of Cosbys” vids https://waxy.org/2006/03/litigation_cosb/

#15yrsago Proposed TX law would criminalize TSA screening procedures https://blog.tenthamendmentcenter.com/2011/03/texas-legislation-proposes-felony-charges-for-tsa-agents/

#15yrsago Rodney King: 20 years of citizen photojournalism https://mediactive.com/2011/03/02/rodney-king-and-the-rise-of-the-citizen-photojournalist/

#15yrsago Mobile “bandwidth hogs” are just ahead of the curve https://tech.slashdot.org/story/11/03/02/2027209/High-Bandwidth-Users-Are-Just-Early-Adopters

#15yrsago Peter Watts blogs from near-death experience with flesh-eating bacteria https://www.rifters.com/crawl/?category_name=flesh-eating-fest-11

#15yrsago How a HarperCollins library book looks after 26 checkouts (pretty good!) https://www.youtube.com/watch?v=Je90XRRrruM

#15yrsago Banksy bails out Russian graffiti artists https://memex.craphound.com/2011/03/04/banksy-bails-out-russian-graffiti-artists/

#15yrsago TSA wants hand-luggage fee to pay for extra screening due to checked luggage fees https://web.archive.org/web/20110308142316/https://hosted.ap.org/dynamic/stories/U/US_TSA_BAGGAGE_FEES?SITE=AP&amp;SECTION=HOME&amp;TEMPLATE=DEFAULT&amp;CTIME=2011-03-03-16-50-03

#15yrsago US house prices fall to 1890s levels (where they usually are) https://www.csmonitor.com/Business/Paper-Economy/2011/0303/Home-prices-falling-to-level-of-1890s

#10yrsago Whuffie would be a terrible currency https://locusmag.com/feature/cory-doctorow-wealth-inequality-is-even-worse-in-reputation-economies/

#10yrsago Ditch your overpriced Sodastream canisters in favor of refillable CO2 tanks https://www.wired.com/2016/03/sodamod/

#10yrsago Why the First Amendment means that the FBI can’t force Apple to write and sign code https://www.eff.org/files/2016/03/03/16cm10sp_eff_apple_v_fbi_amicus_court_stamped.pdf

#10yrsago Apple vs FBI: The privacy disaster is inevitable, but we can prevent the catastrophe https://www.theguardian.com/technology/2016/mar/04/privacy-apple-fbi-encryption-surveillance

#10yrsago The 2010 election was the most important one in American history https://www.youtube.com/watch?v=fw41BDhI_K8

#10yrsago As Apple fights the FBI tooth and nail, Amazon drops Kindle encryption https://web.archive.org/web/20160304055204/https://motherboard.vice.com/read/amazon-removes-device-encryption-fire-os-kindle-phones-and-tablets

#10yrsago Understanding American authoritarianism https://web.archive.org/web/20160301224922/https://www.vox.com/2016/3/1/11127424/trump-authoritarianism

#10yrsago Proposal: replace Algebra II and Calculus with “Statistics for Citizenship” https://web.archive.org/web/20190310081625/https://slate.com/human-interest/2016/03/algebra-ii-has-to-go.html

#10yrsago Panorama: the largest photo ever made of NYC https://360gigapixels.com/nyc-skyline-photo-panorama/

#1yrago Ideas Lying Around https://pluralistic.net/2025/03/03/friedmanite/#oil-crisis-two-point-oh

#1yrago There Were Always Enshittifiers https://pluralistic.net/2025/03/04/object-permanence/#picks-and-shovels


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026
  • "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



Colophon (permalink)

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 (1066 words today, 43341 total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

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

19:42

DOS memory management [OSnews]

The memory management in DOS is simple, but that simplicity may be deceptive. There are several rather interesting pitfalls that programming documentation often does not mention.

↫ Michal Necasek at the OS/2 Museum

A must-read for people writing software for earlier DOS versions.

It’s another gorgeous Spring Arts issue of The Stranger! [The Stranger]

Sorry to immediately be a bummer, but I can’t stop thinking about the state of technology. by Emily Nokes

Sorry to immediately be a bummer, but I can’t stop thinking about the state of technology. About how we could have done anything in the world with it at this point, and yet this is where we landed. 

Waist-deep in a slop gauntlet run by the most corrupt/least cool (in every sense of the word) grifters imaginable. An internet that currently looks like shit and works like shit, in service of shareholders who will monetize it until there is nothing left to extract. I won’t belabor the point. 

Except of course I will. We are supposedly inching toward an era of AI grandiosity beyond our wildest dreams/nightmares, but until that happens, can we make one website function correctly? It would be incredible, if in the year of our 2026, I could look up what time a show starts without being led to a third-party ticket site, bloated with ads, with some out-of-date map widget that blocks the screen while their glitchy AI asks if you want whatever the fuck. Anything but the information you’re looking for. You will never find it; you will forget what you came here for. 

Woman yells at [the] Cloud, I know. But if you are a venture capitalist reading this (hiiii), let me whisper my incredible idea, then: Make the internet work again. 

Beyond its current janky state, AI’s insidious seep into the arts raises genuine concerns around labor displacement, authorship, surveillance capitalism, and the slow evaporation of expertise. Another concern is simpler: The people pushing AI are fucking dweebs. Mikey Shulman (of generative AI start-up Suno) literally said, out loud, in an interview: “It’s not really enjoyable to make music now. It takes a lot of time, it takes a lot of practice, you need to get really good at an instrument or really good at a piece of production software.” Concluding that this is a problem to be solved (by him, for money) rather than, you know, the entire point. 

Finally. We are so close to solving the problem of having a creative process.

Okay that is enough rain! The days are getting longer, my friend, and I am once again trying to keep it weird around here. What are the interesting people of Seattle doing with their one precious life?

My moodboard for this issue was ARTS, of course, with a special interest in: anti-slop, DIY out of ethical necessity, weird/cool/fun, hands-on, physical media, in real life. We may not be able to escape algo-driven toxicity entirely at this point, but I was curious about the people and places operating outside of all that. People dedicated to the value of physical experience, or people doing strange or difficult or specific things with a lot of dedication. Some as a deliberate statement, some just because it’s what they’re into, or it’s what they’ve always done. I’m tickled by the results. People are making such neat things!

In these pages you’ll find artists who deal in physical media—less because the aesthetic still fucks (it does), but because every other option sucks. We make the case for recession-era art, repairing your own clothes, and the joy and frustration of a dumber phone. 

Elsewhere, what’s more analog than a baroque flutist? An opera singer, perhaps—did you know they are just belting it out without amplification up there? We also learn about the ancient techniques like the Korean paper art of hanji, and Turkish meat-carving with giant blades. 

We also envision something better. A city with a healthy bodega culture, a city that invests in the arts, a city with unique arts spaces, and a city that envisions something better for a neat old building in a queer/arts neighborhood than a… McDonald’s. 

Spring is coming.
— Emily Nokes 

COVER ART

Samantha Yun Wall
Diaspore No.15 (2026)
From Let There Be Light at Cannonball Arts

This Issue Brought to You By…

The same intensity with which Spencer Pratt reads the audiobook of his memoir The Guy You Loved to Hate

Hot Slog Buns

Zoloft

Gabapentin

The weight of the world

Gun soup

Chappell Roan’s nipples

Alexander Skarsgård’s slutty little glasses

The community fig leaf

Realizing I’ve been wearing my carabiner on the wrong side

Season two of The Boyfriend on Netflix

Joy sobbing to videos of Alysa Liu

Hilary Knight refusing to make excuses for men’s behavior

“Regular Rabbit” by Stephen Spencer

Keri Russell’s wigs on The Americans

Puppy anticipation

A powder day, finally

My last fried nerve

Chu Minh Tofu and Vegan Deli

Ex-Lax

LITERALLY MAKING PHYSICAL MEDIA

Cold red wine

Lightrailers is a real word, Henry

The Kissenger Pocket Pussy for Kissing

Ring, the dogcatching company

Being Chinese before Chinamaxxing made being Chinese cool

Sparkle kicks in Las Vegas

19:21

[$] The relicensing of chardet [LWN.net]

Chardet is a Python module that attempts to determine which character set was used to encode a text string. It was originally written by Mark Pilgrim, who is also the author of a number of Python books; the 1.0 release happened in 2006. For many years, this module has been under the maintainership of Dan Blanchard. Chardet has always been licensed under the LGPL, but, with the 7.0.0 release, Blanchard changed the terms to the permissive MIT license. That has led to an extensive (and ongoing) discussion on when code can be relicensed against the wishes of its original author, and whether using a large language model to rewrite code is a legitimate way to strip copyleft requirements from code.

18:56

Urbanist Ron Davis Hungers for the House [The Stranger]

Davis has heard grumblings about his decision to run against an established Democrat incumbent, but he thinks he's the right choice for the seat. by Nathalie Graham

I sat across from Ron Davis—dad, urbanist, bald—at Tailwind Cafe in Capitol Hill. He wasn’t going to eat during our interview, but then he saw the menu: the “finest” avocado toast in the city. He had to try it. But we weren’t here to discuss toast. We were here to discuss his latest candidacy.

Voters may remember the former tech start-up CEO from his 2023 city council campaign. He ran for the District 4 seat as a density champion, a progressive—aka everything 2023 voters rejected. Outspent by corporate PACs, he lost to Maritza Rivera. He’s been a constant poster since—skeets, TikToks, Reels, and Substacks (or just stacks?). Raise your hands, Rondezvous readers.

Even if you haven’t seen Davis, you’ve probably sensed him. He’s become a progressive mainstay in local politics. He even flirted with a mayoral run before Katie Wilson jumped in. A believer in the cause—and a casualty of corporate fundraising—he fundraised with Progressive People Power PAC (P3) which helped unseat Sara Nelson and kickstarted the PAC that supported Wilson with political consultant Stephen Paolini. (“He and I, together basically raised all the individual contributor money between the two of us,” says Paolini, the director of the Katie Wilson for an Affordable Seattle PAC.)

Now he’s hoping to knock Rep. Gerry Pollet out of Washington’s 46th District, the Northeast Seattle region he’s represented for 15 years.

Davis says he’s heard grumblings about this decision. Taking on a 15-year incumbent is expensive and there are actual swing districts where people want to put their energy and their dollars. But “good enough is not good enough, especially right now,” Davis says.

Pollet may be fine on taxes and education, but he’s also a NIMBY firmly standing in the way of change, Davis says. “There's no suburb left in the district, it’s time to act like it,” he says, citing Pollet’s vote against an environmental review exemption to speed along patching the missing link in the Burke Gilman trail, and Pollet’s watering down of the “missing middle” housing bill back in 2022, which could have allowed denser buildings in more places.

Davis wants to build more housing, improve transportation, stick it to Donald Trump, pass progressive revenue. Even if it ruffles some feathers, he thinks he’s the better person for the job.

While writing this story, Pollet’s communications consultant Erik Houser texted me to say he heard I was writing about Davis, and Pollet wanted to respond to anything negative Davis said about him.

Pollet rejects Davis’ characterization. In a statement, Pollet said “he has long advocated for increasing density in Seattle and the 46th district” and has sponsored legislation to make that happen, including 2025’s “middle housing and transit oriented development bills.” He did vote against suspending the environmental review for the Burke Gilman Trail, but maintains “the legislature has put these environmental reviews in place for an important purpose.”

Paolini and Tiffani McCoy, the interim CEO of the Seattle Social Housing Developer, agree that Davis is a housing juggernaut. He’s already been in Olympia advocating for housing bills, like last year’s Parking Reform and Modernization Act which restricts how much parking cities and counties can require for new housing. Davis says he put together the coalition that got the bill passed.

“I realized this is a place I could really make a difference,” he says.

Davis is persistent to the point of being professionally annoying, he says. “It's kind of a personality flaw, but it turns out, like in enterprise sales where I come from, and politics it has proven very, very useful, even if it drives some people nuts.”

Effective, but is that the personality of a guaranteed collaborator, or a pusher hungry for credit and adoration?

Wait. Hold on. Davis’ avocado toast arrived. He paused to take a photo. Two juicy fried eggs sat on the green bed of fluffed avocado, dusted with cracked pepper and spices.

“Oh, the lighting is bad,” he says, and readjusted, leaning back and lowering his body in the chair, twisting his phone to the landscape position.

“Do you always take photos of your food?”

“Not always but when I go—” he gasps— “then I get really excited about it,” he says. The pictures often go nowhere.

He pressed his knife into one fried egg. Yolk spilled over the toast.

He dug in the toast and his loftier goals: 1,000 miles of new bus-only lanes across the state, taxes on the rich to pay for universal child care (the millionaires' tax doesn’t go far enough, he says), and myriad wonky housing proposals.

And then there’s that damn President and his gooners. Davis supports several of the anti-ICE bills making their way through the Legislature—a potentially unenforceable bill to unmask ICE, and another prohibiting agents from becoming cops in Washington. Though the latter doesn’t go far enough, he says.

“It should be a permanent ban from working for any state or locally-funded organization.”

“We should punish companies that collaborate [with ICE],” he says, waving his fork with a perfect bite of fried egg and avocado toast. This could mean taxing them more or, at the state level, cutting any contracts with businesses that are also working with ICE in any capacity.

Davis wants there to be a state run “office of people” to disrupt  ICE operations. People “who are trained in interruption and de-escalation, and who have an understanding of the ways to maximize the difficulty for ICE.” He wants the people “ready and deployable” to make ICE operations more difficult and costlier in Washington.

That’s kind of fucking crazy. All I could say was, “Wow, I can only imagine the Truth Social posts.”

“[Conservatives] say all that shit about paid protesters—they make all that shit up anyway—why not do it?” Davis says.

“That was fucking amazing,” he says of his avocado toast. “Be sure to get the extra egg. I just love runny yolk. I had a whole spiritual experience while we were talking.”

Ed's Note: This story has been updated to clarify that Davis fundraised for individual campaign contributions. 

18:35

Buildroot 2026.02 released [LWN.net]

Peter Korsgaard has announced version 2026.02 of Buildroot, a tool for generating embedded Linux systems through cross-compilation. Notable changes include added support for HPPA, use of the 6.19.x kernel headers by default, better SBOM generation, and more.

Again a very active cycle with more than 1500 changes from 97 unique contributors. I'm once again very happy to see so many "new" people next to the "oldtimers".

See the changelog for full details. Thanks to Julien Olivain for pointing us to the announcement.

18:07

Dirk Eddelbuettel: RcppGSL 0.3.14 on CRAN: Maintenance [Planet Debian]

A new release 0.3.14 of RcppGSL is now on CRAN. The RcppGSL package provides an interface from R to the GNU GSL by relying on the Rcpp package. It has already been uploaded to Debian, and is also already available as a binary via r2u.

This release, the first in over three years, contains mostly maintenance changes. We polished the fastLm example implementation a little more, updated continunous integration as one does over such a long period, adopted the Authors@R convention, switched the (pre-made) pdf vignette to a new driver now provided by Rcpp, updated vignette references and URLs, and updated one call to Rf_error to aid in a Rcpp transition towards using only Rcpp::stop which unwinds error conditions better. (Technically this was a false positive on Rf_error but on the margin worth tickling this release after all this time.)

The NEWS entry follows:

Changes in version 0.3.14 (2026-03-05)

  • Updated some internals of fastLm example, and regenerated RcppExports.* files

  • Several updates for continuous integration

  • Switched to using Authors@R

  • Replace ::Rf_error with (Rf_error) in old example to aid Rcpp transition to Rcpp::stop (or this pass-through)

  • Vignette now uses the Rcpp::asis builder for pre-made pdfs

  • Vignette references have been updated, URLs prefer https and DOIs

Thanks to my CRANberries, there is also a diffstat report for this release. More information is on the RcppGSL page. Questions, comments etc should go to the issue tickets at the GitHub repo.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.

Slog AM: Republicans Want Unconstitutional War, Mayor Wilson Wants 1,000 Shelter Units, and Dems Argue Over Millionaires' Tax [The Stranger]

The Stranger's morning news roundup. by Micah Yip

Constitution? I Hardly Know Him: Senate Republicans voted down a war powers resolution that would’ve halted the attacks on Iran and allowed time for Congress to authorize the war. That’s the Constitutional way to go to war, anyway—only Congress has the power to declare war. The president does not (despite this, we haven’t declared any of our wars since World War II, and we’ve waged many). The House will vote today on a similar measure, but it’s expected to fail. 

Also: The US government is dodging responsibility for the deadly strike on the Iranian girls’ school, with Defense Secretary Pete Hegseth only saying they’re “investigating” the incident. The incident killed at least 165 students and injured 96 others. 

And Also: President Donald Trump says he must be involved in choosing Iran’s next leader. Replacing Ayatollah Ali Khamenei with Mojtaba Khamenei, his son and likely successor, would be “unacceptable,” Trump said.

Trespassing/Occupying, Tomayto/Tomahto: Last May, 33 protesters broke into and occupied the University of Washington’s Interdisciplinary Engineering Building, smashing windows, spray painting walls, breaking equipment and setting dumpsters on fire to protest the university’s ties to Boeing, which sells weapons to Israel. Twenty-three of them were UW students. Yesterday, King County prosecutors charged them with misdemeanor criminal trespassing—a downgrade from the original felony charges they got in June, which were dropped for lack of evidence. They’ll be arraigned on March 25.

Another Day, Another Anti-Trans Effort: An initiative to keep trans girls out of sports will appear on November’s statewide ballot. Backed by Brian Heywood, the conservative hedge fund manager who founded Let’s Go Washington, Initiative IL26-638 would require girls to “verify their biological sex” with a health care provider to play school sports. Verification could include  blood draws and genital exams.

The War on Drugs Sugar: Health and Human Services Secretary Robert F. Kennedy Jr. wants Dunkin’ and Starbucks to prove their sugary coffee drinks are “safe.” How about informing Americans of the risks of going unvaccinated?

Mayor Wilson Proposes 1,000 New Shelter Units: Mayor Katie Wilson sent legislation to City Council that would let the city more quickly secure space for 1,000 new units of shelter and emergency housing in Seattle this year. Her proposal would both allow the Finance and Administrative Services Department to sign lease agreements with property owners and temporarily increase the number of people allowed in most shelters from 100 to 150, while one shelter in each district could house up to 250.

Weather: Mostly cloudy with a high of 51 and a 50 percent chance of rain before noon. Tonight, temps drop to a low around 44 with rain falling after midnight.

Ouch: Republican Sen. Tim Sheehy tried to help Capitol police arrest Brian McGinnis, a Marine and Green Party candidate, protesting the war in Iran at a Senate hearing yesterday, and ended up snapping his arm as he clutched the door. 

Here’s the video. Keep scrolling if you’re squeamish.

 

[TW: graphic fracture, sound of breaking bone]

Sen Tim Sheehy (R-Montana) badly breaking the arm of a Marine veteran protesting the war Iran.

[image or embed]

— Claire Zagorski, MSc, EMT-P (@clairezagorski.bsky.social) March 4, 2026 at 2:05 PM

 

Extreme County Makeover (Cont.): It looks like King County Executive Girmay Zahilay is continuing to reconfigure the county workforce. He just hired a new internal auditor and created a “subcabinet” focused on accountability, new internal grant fund controls and training employees on ethics and fraud prevention to “improve oversight of the county’s finances.” 

Hurry Up: State lawmakers are running out of time to pass the millionaires' tax before the legislative session ends. Most Democrats support the bill, but intra-party division threatens to derail this much needed tax. If passed, the bill would still need Gov. Bob Ferguson’s signature, but he’s now said for the third time the measure still needs revisions before he’d sign. He said he’s hopeful they can reach an agreement but is committed to getting this “right,” even if that means pushing the issue to next year.

War in Iran Brings Higher Gas Prices: The state's average price climbed another two cents per gallon. The state’s average price is $4.40 per gallon, as of yesterday—43 cents more than a month ago and $1.20 above the national average. 

FIFA Transit Money: Seattle is getting $8.4 million from the $100 million Federal Transit Administration to mitigate any  strain on the city’s public transit system from the FIFA World Cup this summer. These funds can be used for event planning, hiring, security equipment, and more. The money is part of last month’s $1.2 trillion congressional spending package that prevented a government shutdown but stalled funding for the Department of Homeland Security. 

Will Iran Send a Team? They’re scheduled to play against Egypt in Seattle on June 26, but after the US attacks, Iranian soccer federation President Mehdi Taj said they might not.

17:49

Israel Hacked Traffic Cameras in Iran [Schneier on Security]

Multiple news outlets are reporting on Israel’s hacking of Iranian traffic cameras and how they assisted with the killing of that country’s leadership.

The New York Times has an on the intelligence operation more generally.

17:21

Sean Whitton: Southern Biscuits with British ingredients [Planet Debian]

I miss the US more and more, and have recently been trying to perfect Southern Biscuits using British ingredients. It took me eight or nine tries before I was consistently getting good results. Here is my recipe.

Ingredients

  • 190g plain flour
  • 60g strong white bread flour
  • 4 tsp baking powder
  • ¼ tsp bicarbonate of soda
  • 1 tsp cream of tartar (optional)
  • 1 tsp salt
  • 100g unsalted butter
  • 180ml buttermilk, chilled
    • If your buttermilk is thicker than the consistency of ordinary milk, you’ll need around 200ml.
  • extra buttermilk for brushing

Method

  1. Slice and then chill the butter in the freezer for at least fifteen minutes.
  2. Preheat oven to 220°C with the fan turned off.
  3. Twice sieve together the flours, leaveners and salt. Some salt may not go through the sieve; just tip it back into the bowl.
  4. Cut cold butter slices into the flour with a pastry blender until the mixture resembles coarse crumbs: some small lumps of fat remaining is desirable. In particular, the fine crumbs you are looking for when making British scones are not wanted here. Rubbing in with fingertips just won’t do; biscuits demand keeping things cold even more than shortcrust pastry does.
  5. Make a well in the centre, pour in the buttermilk, and stir with a metal spoon until the dough comes together and pulls away from the sides of the bowl. Avoid overmixing, but I’ve found that so long as the ingredients are cold, you don’t have to be too gentle at this stage and can make sure all the crumbs are mixed in.
  6. Flour your hands, turn dough onto a floured work surface, and pat together into a rectangle. Some suggest dusting the top of the dough with flour, too, here.
  7. Fold the dough in half, then gather any crumbs and pat it back into the same shape. Turn ninety degrees and do the same again, until you have completed a total of eight folds, two in each cardinal direction. The dough should now be a little springy.
  8. Roll to about ½ inch thick.
  9. Cut out biscuits. If using a round cutter, do not twist it, as that seals the edges of the biscuits and so spoils the layering.
  10. Transfer to a baking sheet, placed close together (helps them rise). Flour your thumb and use it to press an indent into the top of each biscuit (helps them rise straight), brush with buttermilk.
  11. Bake until flaky and golden brown: about fifteen minutes.

Gravy

It turns out that the “pepper gravy” that one commonly has with biscuits is just a white/béchamel sauce made with lots of black pepper. I haven’t got a recipe I really like for this yet. Better is a “sausage gravy”; again this has a white sauce as its base, I believe. I have a vegetarian recipe for this to try at some point.

Variations

  • These biscuits do come out fluffy but not so flaky. For that you can try using lard instead of butter, if you’re not vegetarian (vegetable shortening is hard to find here).
  • If you don’t have a pastry blender and don’t want to buy one you can try not slicing the butter and instead coarsely grating it into the flour out of the freezer.
  • An alternative to folding is cutting and piling the layers.
  • You can try rolling out to 1–1½ inches thick.
  • Instead of cutting out biscuits you can just slice the whole piece of dough into equal pieces. An advantage of this is that you don’t have to re-roll, which latter also spoils the layering.
  • Instead of brushing with buttermilk, you can take them out after they’ve started to rise but before they’ve browned, brush them with melted butter and put them back in.

Notes

  • I’ve had more success with Dale Farm’s buttermilk than Sainsbury’s own. The former is much runnier.
  • Southern culture calls for biscuits to be made the size of cat’s heads.
  • Bleached flour is apparently usual in the South, but is illegal(!) here. Apparently bleaching can have some effect on the development of the gluten which would affect the texture.
  • British plain flour is made from soft wheat and has a lower percentage of protein/gluten, while American all-purpose flour is often(?) made from harder wheat and has more protein. In this recipe I mix plain and strong white flour, in a ratio of 3:1, to emulate American all-purpose flour.

    I am not sure why this works best. In the South they have soft wheats too, and lower protein percentages. The famous White Lily flour is 9%. (Apparently you can mix US cake flour and US all-purpose flour in a ratio of 1:1 to achieve that; in the UK, Shipton Mill sell a “soft cake and pastry flour” which has been recommended to me as similar.)

    This would suggest that British plain flour ought to be closer to Southern flour than the standard flour available in most of the US. But my experience has been that the biscuits taste better with the plain and strong white 3:1 mix. Possibly Southeners would disprefer them. I got some feedback that good biscuits are about texture and moistness and not flavour.

  • Baking powder in the US is usually double-acting but ours is always single-acting, so we need double quantities of that.

Sean Whitton: dgit-as-a-service retrospective [Planet Debian]

We recently launched tag2upload, aka cloud dgit or dgit-as-a-service. This was something of a culmination of work I’ve been doing since 2016 towards modernising Debian workflows, so I thought I’d write a short personal retrospective.

When I started contributing to Debian in 2015, I was not impressed with how packages were represented in Git by most package maintainers, and wanted a pure Git workflow. I read a couple of Joey Hess’s blog posts on the matter, a rope ladder to the dgit treehouse and upstream git repositories and made a bug report against dgit hoping to tie some things together.

The results of that early work were the git-deborig(1) program and the dgit-maint-merge(7) tutorial manpage. Starting with Joey’s workflow pointers, I developed a complete, pure Git workflow that I thought would be suitable for all package maintainers in Debian. It was certainly well-suited for my own packages. It took me a while to learn that there are packages for which this workflow is too simple. We now also have the dgit-maint-debrebase(7) workflow which uses git-debrebase, something which wasn’t invented until several years later. Where dgit-maint-merge(7) won’t do, you can use dgit-maint-debrebase(7), and still be doing pretty much pure Git. Here’s a full, recent guide to modernisation.

The next most significant contribution of my own was the push-source subcommand for dgit. dgit push required a preexisting .changes file produced from the working tree. I wanted to make dgit push-source prepare that .changes file for you, but also not use the working tree, instead consulting HEAD. The idea was that you were doing a git push – which doesn’t care about the working tree – direct to the Debian archive, or as close as we could get. I implemented that at DebConf18 in Taiwan, I think, with Ian, and we also did a talk on git-debrebase. We ended up having to change it to look at the working tree in addition to HEAD to make it work as well as possible, but I think that the idea of a command which was like doing a Git push direct to the archive was perhaps foundational for us later wanting to develop tag2upload. Indeed, while tag2upload’s client-side tool git-debpush does look at the working tree, it doesn’t do so in a way that is essential to its operation. tag2upload is dgit push-source-as-a-service.

And finally we come to tag2upload, a system Ian and I designed in 2019 during a two-person sprint at his place in Cambridge, while I was visiting the UK from Arizona. With tag2upload, appropriately authorised Debian package maintainers can upload to Debian with only pure Git operations – namely, making and pushing a signed Git tag to Debian’s GitLab instance. Although we had a solid prototype in 2019, we only finally launched it last month, February 2026. This was mostly due to political delays, but also because we have put in a lot of hours making it better in various ways.

Looking back, one thing that seems notable to me is that the core elements of the pure Git workflows haven’t changed much at all. Working out all the details of dgit-maint-merge(7), designing and writing git-debrebase (Ian’s work), and then working out all the details of dgit-maint-debrebase(7), are the important parts, to me. The rest is mostly just large amounts of compatibility code. git-debrebase and dgit-maint-debrebase(7) are very novel but dgit-maint-merge(7) is mostly just an extrapolation of Joey’s thoughts from 13 years ago. And yet, adoption of these workflows remains low.

People prefer to use what they are used to using, even if the workflows have significant inconveniences. That’s completely understandable; I’m really interested in good workflows, but most other contributors care less about it. But you would expect enough newcomers to have arrived in 13 years that the new workflows would have a higher uptake. That is, packages maintained by contributors that got involved after these workflows became available would be maintained using newer workflows, at least. But the inertia seems to be too strong even for that. Instead, new contributors used to working purely out of Git are told they need to learn Debian’s strange ways of representing things, tarballs and all. It doesn’t have to be that way. We hope that tag2upload will make the pure Git workflows seem more appealing to people.

16:21

New stable kernels to address build failures [LWN.net]

Sasha Levin has announced the release of the 6.12.76, 6.6.129, and 6.1.166 stable kernels. These releases address a regression reported by Peter Schneider; Levin said that an upgrade is only necessary for those who have observed a build failure with the 6.12.75, 6.6.128, or 6.1.165 kernels.

[$] Reconsidering the multi-generational LRU [LWN.net]

The multi-generational LRU (MGLRU) is an alternative memory-management algorithm that was merged for the 6.1 kernel in late 2022. It brought a promise of much-improved performance and simplified code. Since then, though, progress on MGLRU has stalled, and it still is not enabled on many systems. As the 2026 Linux Storage, Filesystem, Memory-Management and BPF Summit (LSFMM+BPF) approaches, several memory-management developers have indicated a desire to talk about the future of MGLRU. While some developers are looking for ways to improve the subsystem, another has called for it to be removed entirely.

15:14

Update, re: Secret Project at the Scalzi Compound [Whatever]

We have an outline! Major characters, plot lines, and various important story beats all laid out. Now to start writing it all up. Very exciting stuff.

This is worth noting because this is the first time Athena and I are doing this, but it won’t be the last, since we’ll be using this process to develop other projects soon. This is what our little family business does, after all: Think of cool stuff that we can then develop into actual projects that will hopefully become things you can see and buy. This is, hopefully, the first of many.

— JS

14:49

Security updates for Thursday [LWN.net]

Security updates have been issued by AlmaLinux (go-rpm-macros, libpng, thunderbird, udisks2, and valkey), Fedora (coturn, php-zumba-json-serializer, valkey, and yt-dlp), Red Hat (delve, go-rpm-macros, grafana, grafana-pcp, image-builder, osbuild-composer, and postgresql), Slackware (nvi), SUSE (firefox, glibc, haproxy, kernel, kubevirt, libsoup, libsoup2, libxslt, mozilla-nss, ocaml, python, python-Django, python-pip, util-linux, virtiofsd, wicked2nm,suse-migration-services,suse-migration- sle16-activation,SLES16-Migration,SLES16-SAP_Migration, and wireshark), and Ubuntu (gimp, linux-aws, linux-lts-xenial, linux-aws-fips, linux-azure, linux-azure-fips, linux-fips, nss, postgresql-14, postgresql-16, postgresql-17, and qemu).

14:28

The Accidental Orchestrator [Radar]

This is the first article in a series on agentic engineering and AI-driven development. Look for the next article on March 19 on O’Reilly Radar.

There’s been a lot of hype about AI and software development, and it comes in two flavors. One says, “We’re all doomed, that tools like Claude Code will make software engineering obsolete within a year.” The other says, “Don’t worry, everything’s fine, AI is just another tool in the toolbox.” Neither is honest.

I’ve spent over 20 years writing about software development for practitioners, covering everything from coding and architecture to project management and team dynamics. For the last two years I’ve been focused on AI, training developers to use these tools effectively, writing about what works and what doesn’t in books, articles, and reports. And I kept running into the same problem: I had yet to find anyone with a coherent answer for how experienced developers should actually work with these tools. There are plenty of tips and plenty of hype but very little structure, and very little you could practice, teach, critique, or improve.

I’d been observing developers at work using AI with various levels of success, and I realized we need to start thinking about this as its own discipline. Andrej Karpathy, the former head of AI at Tesla and a founding member of OpenAI, recently proposed the term “agentic engineering” for disciplined development with AI agents, and others like Addy Osmani are getting on board. Osmani’s framing is that AI agents handle implementation but the human owns the architecture, reviews every diff, and tests relentlessly. I think that’s right.

But I’ve spent a lot of the last two years teaching developers how to use tools like Claude Code, agent mode in Copilot, Cursor, and others, and what I keep hearing is that they already know they should be reviewing the AI’s output, maintaining the architecture, writing tests, keeping documentation current, and staying in control of the codebase. They know how to do it in theory. But they get stuck trying to apply it in practice: How do you actually review thousands of lines of AI-generated code? How do you keep the architecture coherent when you’re working across multiple AI tools over weeks? How do you know when the AI is confidently wrong? And it’s not just junior developers who are having trouble with agentic engineering. I’ve talked to senior engineers who struggle with the shift to agentic tools, and intermediate developers who take to it naturally. The difference isn’t necessarily the years of experience; it’s whether they’ve figured out an effective and structured way to work with AI coding tools. That gap between knowing what developers should be doing with agentic engineering and knowing how to integrate it into their day-to-day work is a real source of anxiety for a lot of engineers right now. That’s the gap this series is trying to fill.

Despite what much of the hype about agentic engineering is telling you, this kind of development doesn’t eliminate the need for developer expertise; just the opposite. Working effectively with AI agents actually raises the bar for what developers need to know. I wrote about that experience gap in an earlier O’Reilly Radar piece called “The Cognitive Shortcut Paradox.” The developers who get the most from working with AI coding tools are the ones who already know what good software looks like, and can often tell if the AI wrote it.

The idea that AI tools work best when experienced developers are driving them matched everything I’d observed. It rang true, and I wanted to prove it in a way that other developers would understand: by building software. So I started building a specific, practical approach to agentic engineering built for developers to follow, and then I put it to the test. I used it to build a production system from scratch, with the rule that AI would write all the code. I needed a project that was complex enough to stress-test the approach, and interesting enough to keep me engaged through the hard parts. I wanted to apply everything I’d learned and discover what I still didn’t know. That’s when I came back to Monte Carlo simulations.

The experiment

I’ve been obsessed with Monte Carlo simulations ever since I was a kid. My dad’s an epidemiologist—his whole career has been about finding patterns in messy population data, which means statistics was always part of our lives (and it also means that I learned SPSS at a very early age). When I was maybe 11 he told me about the drunken sailor problem: A sailor leaves a bar on a pier, taking a random step toward the water or toward his ship each time. Does he fall in or make it home? You can’t know from any single run. But run the simulation a thousand times, and the pattern emerges from the noise. The individual outcome is random; the aggregate is predictable.

I remember writing that simulation in BASIC on my TRS-80 Color Computer 2: a little blocky sailor stumbling across the screen, two steps forward, one step back. The drunken sailor is the “Hello, world” of Monte Carlo simulations. Monte Carlo is a technique for problems you can’t solve analytically: You simulate them hundreds or thousands of times and measure the aggregate results. Each individual run is random, but the statistics converge on the true answer as the sample size grows. It’s one way we model everything from nuclear physics to financial risk to the spread of disease across populations.

What if you could run that kind of simulation today by describing it in plain English? Not a toy demo but thousands of iterations with seeded randomness for reproducibility, where the outputs get validated and the results get aggregated into actual statistics you can use. Or a pipeline where an LLM generates content, a second LLM scores it, and anything that doesn’t pass gets sent back for another try.

The goal of my experiment was to build that system, which I called Octobatch. Right now, the industry is constantly looking for new real-world end-to-end case studies in agentic engineering, and I wanted Octobatch to be exactly that case study.

I took everything I’d learned from teaching and observing developers working with AI, put it to the test by building a real system from scratch, and turned the lessons into a structured approach to agentic engineering I’m calling AI-driven development, or AIDD. This is the first article in a series about what agentic engineering looks like in practice, what it demands from the developer, and how you can apply it to your own work.

The result is a fully functioning, well-tested application that consists of about 21,000 lines of Python across several dozen files, backed by complete specifications, nearly a thousand automated tests, and quality integration and regression test suites. I used Claude Cowork to review all the AI chats from the entire project, and it turns out that I built the entire application in roughly 75 hours of active development time over seven weeks. For comparison, I built Octobatch in just over half the time I spent last year playing Blue Prince.

But this series isn’t just about Octobatch. I integrated AI tools at every level: Claude and Gemini collaborating on architecture, Claude Code writing the implementation, LLMs generating the pipelines that run on the system they helped build. This series is about what I learned from that process: the patterns that worked, the failures that taught me the most, and the orchestration mindset that ties it all together. Each article pulls a different lesson from the experiment, from validation architecture to multi-LLM coordination to the values that kept the project on track.

Agentic engineering and AI-driven development

When most people talk about using AI to write code, they mean one of two things: AI coding assistants like GitHub Copilot, Cursor, or Windsurf, which have evolved well beyond autocomplete into agentic tools that can run multifile editing sessions and define custom agents; or “vibe coding,” where you describe what you want in natural language and accept whatever comes back. These coding assistants are genuinely impressive, and vibe coding can be really productive.

Using these tools effectively on a real project, however, maintaining architectural coherence across thousands of lines of AI-generated code, is a different problem entirely. AIDD aims to help solve that problem. It’s a structured approach to agentic engineering where AI tools drive substantial portions of the implementation, architecture, and even project management, while you, the human in the loop, decide what gets built and whether it’s any good. By “structure,” I mean a set of practices developers can learn and follow, a way to know whether the AI’s output is actually good, and a way to stay on track across the life of a project. If agentic engineering is the discipline, AIDD is one way to practice it.

In AI-driven development, developers don’t just accept suggestions or hope the output is correct. They assign specific roles to specific tools: one LLM for architecture planning, another for code execution, a coding agent for implementation, and the human for vision, verification, and the decisions that require understanding the whole system.

And the “driven” part is literal. The AI is writing almost all of the code. One of my ground rules for the Octobatch experiment was that I would let AI write all of it. I have high code quality standards, and part of the experiment was seeing whether AIDD could produce a system that meets them. The human decides what gets built, evaluates whether it’s right, and maintains the constraints that keep the system coherent.

Not everyone agrees on how much the developer needs to stay in the loop, and the fully autonomous end of the spectrum is already producing cautionary tales. Nicholas Carlini at Anthropic recently tasked 16 Claude instances to build a C compiler in parallel with no human in the loop. After 2,000 sessions and $20,000 in API costs, the agents produced a 100,000-line compiler that can build a Linux kernel but isn’t a drop-in replacement for anything, and when all 16 agents got stuck on the same bug, Carlini had to step back in and partition the work himself. Even strong advocates of a completely hands-off, vibe-driven approach to agentic engineering might call that a step too far. The question is how much human judgment you need to make that code trustworthy, and what specific practices help you apply that judgment effectively.

The orchestration mindset

If you want to get developers thinking about agentic engineering in the right way, you have to start with how they think about working with AI, not just what tools they use. That’s where I started when I began building a structured approach, and it’s why I started with habits. I developed a framework for these called the Sens-AI Framework, published as both an O’Reilly report (Critical Thinking Habits for Coding with AI) and a Radar series. It’s built around five practices: providing context, doing research before prompting, framing problems precisely, iterating deliberately on outputs, and applying critical thinking to everything the AI produces. I started there because habits are how you lock in the way you think about how you’re working. Without them, AI-driven development produces plausible-looking code that falls apart under scrutiny. With them, it produces systems that a single developer couldn’t build alone in the same time frame.

Habits are the foundation, but they’re not the whole picture. AIDD also has practices (concrete techniques like multi-LLM coordination, context file management, and using one model to validate another’s output) and values (the principles behind those practices). If you’ve worked with Agile methodologies like Scrum or XP, that structure should be pretty familiar: Practices tell you how to work day-to-day, and habits are the reflexes you develop so that the practices become automatic.

Values often seem weirdly theoretical, but they’re an important piece of the puzzle because they guide your decisions when the practices don’t give you a clear answer. There’s an emerging culture around agentic engineering right now, and the values you bring to your project either match or clash with that culture. Understanding where the values come from is what makes the practices stick. All of that leads to a whole new mindset, what I’m calling the orchestration mindset. This series builds all four layers, using Octobatch as the proving ground.

Octobatch was a deliberate experiment in AIDD. I designed the project as a test case for the entire approach, to see what a disciplined AI-driven workflow could produce and where it would break down, and I used it to apply and improve the practices and values to make them effective and easy to adopt. And whether by instinct or coincidence, I picked the perfect project for this experiment. Octobatch is a batch orchestrator. It coordinates asynchronous jobs, manages state across failures, tracks dependencies between pipeline steps, and makes sure validated results come out the other end. That kind of system is fun to design but a lot of the details, like state machines, retry logic, crash recovery, and cost accounting, can be tedious to implement. It’s exactly the kind of work where AIDD should shine, because the patterns are well understood but the implementation is repetitive and error-prone.

Orchestration—the work of coordinating multiple independent processes toward a coherent outcome—evolved into a core idea behind AIDD. I found myself orchestrating LLMs the same way Octobatch orchestrates batch jobs: assigning roles, managing handoffs, validating outputs, recovering from failures. The system I was building and the process I was using to build it followed the same pattern. I didn’t anticipate it when I started, but building a system that orchestrates AI turns out to be a pretty good way to learn how to orchestrate AI. That’s the accidental part of the accidental orchestrator. That parallel runs through every article in this series.

Want Radar delivered straight to your inbox? Join us on Substack. Sign up here.

The path to batch

I didn’t begin the Octobatch project by starting with a full end-to-end Monte Carlo simulation. I started where most people start: typing prompts into a chat interface. I was experimenting with different simulation and generation ideas to give the project some structure, and a few of them stuck. A blackjack strategy comparison turned out to be a great test case for a multistep Monte Carlo simulation. NPC dialogue generation for a role-playing game gave me a creative workload with subjective quality to measure. Both had the same shape: a set of structured inputs, each processed the same way. So I had Claude write a simple script to automate what I’d been doing by hand, and I used Gemini to double-check the work, make sure Claude really understood my ask, and fix hallucinations. It worked fine at small scale, but once I started running more than a hundred or so units, I kept hitting rate limits, the caps that providers put on how many API requests you can make per minute.

That’s what pushed me to LLM batch APIs. Instead of sending individual prompts one at a time and waiting for each response, the major LLM providers all offer batch APIs that let you submit a file containing all of your requests at once. The provider processes them on their own schedule; you wait for results instead of getting them immediately, but you don’t have to worry about rate caps. I was happy to discover they also cost 50% less, and that’s when I started tracking token usage and costs in earnest. But the real surprise was that batch APIs performed better than real-time APIs at scale. Once pipelines got past the 100- or 200-unit mark, batch started running significantly faster than real time. The provider processes the whole batch in parallel on their infrastructure, so you’re not bottlenecked by round-trip latency or rate caps anymore.

The switch to batch APIs changed how I thought about the whole problem of coordinating LLM API calls at scale, and led to the idea of configurable pipelines. I could chain stages together: The output of one step could become the input to the next, and I could kick off the whole pipeline and come back to finished results. It turns out I wasn’t the only one making the shift to batch APIs. Between April 2024 and July 2025, OpenAI, Anthropic, and Google all launched batch APIs, converging on the same pricing model: 50% of the real-time rate in exchange for asynchronous processing.

You probably didn’t notice that all three major AI providers released batch APIs. The industry conversation was dominated by agents, tool use, MCP, and real-time reasoning. Batch APIs shipped with relatively little fanfare, but they represent a genuine shift in how we can use LLMs. Instead of treating them as conversational partners or one-shot SaaS APIs, we can treat them as processing infrastructure, closer to a MapReduce job than a chatbot. You give them structured data and a prompt template, and they process all of it and hand back the results. What matters is that you can now run tens of thousands of these transformations reliably, at scale, without managing rate limits or connection failures.

Why orchestration?

If batch APIs are so useful, why can’t you just write a for-loop that submits requests and collects results? You can, and for simple cases a quick script with a for-loop works fine. But once you start running larger workloads, the problems start to pile up. Solving those problems turned out to be one of the most important lessons for developing a structured approach to agentic engineering.

First, batch jobs are asynchronous. You submit a job, and results come back hours later, so your script needs to track what was submitted and poll for completion. If your script crashes in the middle, you lose that state. Second, batch jobs can partially fail. Maybe 97% of your requests succeeded and 3% didn’t. Your code needs to figure out which 3% failed, extract them, and resubmit just those items. Third, if you’re building a multistage pipeline where the output of one step feeds into the next, you need to track dependencies between stages. And fourth, you need cost accounting. When you’re running tens of thousands of requests, you want to know how much you spent, and ideally, how much you’re going to spend when you first start the batch. Every one of these has a direct parallel to what you’re doing in agentic engineering: keeping track of the work multiple AI agents are doing at once, dealing with code failures and bugs, making sure the entire project stays coherent when AI coding tools are only looking at the one part currently in context, and stepping back to look at the wider project management picture.

All of these problems are solvable, but they’re not problems you want to solve over and over (in both situations—when you’re orchestrating LLM batch jobs or orchestrating AI coding tools). Solving these problems in the code gave some interesting lessons about the overall approach to agentic engineering. Batch processing moves the complexity from connection management to state management. Real-time APIs are hard because of rate limits and retries. Batch APIs are hard because you have to track what’s in flight, what succeeded, what failed, and what’s next.

Before I started development, I went looking for existing tools that handled this combination of problems, because I didn’t want to waste my time reinventing the wheel. I didn’t find anything that did the job I needed. Workflow orchestrators like Apache Airflow and Dagster manage DAGs and task dependencies, but they assume tasks are deterministic and don’t provide LLM-specific features like prompt template rendering, schema-based output validation, or retry logic triggered by semantic quality checks. LLM frameworks like LangChain and LlamaIndex are designed around real-time inference chains and agent loops—they don’t manage asynchronous batch job lifecycles, persist state across process crashes, or handle partial failure recovery at the chunk level. And the batch API client libraries from the providers themselves handle submission and retrieval for a single batch, but not multistage pipelines, cross-step validation, or provider-agnostic execution.

Nothing I found covered the full lifecycle of multiphase LLM batch workflows, from submission and polling through validation, retry, cost tracking, and crash recovery, across all three major AI providers. That’s what I built.

Lessons from the experiment

The goal of this article, as the first one in my series on agentic engineering and AI-driven development, is to lay out the hypothesis and structure of the Octobatch experiment. The rest of the series goes deep on the lessons I learned from it: the validation architecture, multi-LLM coordination, the practices and values that emerged from the work, and the orchestration mindset that ties it all together. A few early lessons stand out, because they illustrate what AIDD looks like in practice and why developer experience matters more than ever.

  • You have to run things and check the data. Remember the drunken sailor, the “Hello, world” of Monte Carlo simulations? At one point I noticed that when I ran the simulation through Octobatch, 77.5% of the sailors fell in the water. The results for a random walk should be 50/50, so clearly something was badly wrong. It turned out the random number generator was being re-seeded at every iteration with sequential seed values, which created correlation bias between runs. I didn’t identify the problem immediately; I ran a bunch of tests using Claude Code as a test runner to generate each test, run it, and log the results; Gemini looked at the results and found the root cause. Claude had trouble coming up with a fix that worked well, and proposed a workaround with a large list of preseeded random number values in the pipeline. Gemini proposed a hash-based fix reviewing my conversations with Claude, but it seemed overly complex. Once I understood the problem and rejected their proposed solutions, I decided the best fix was simpler than either of the AI’s suggestions: a persistent RNG per simulation unit that advanced naturally through its sequence. I needed to understand both the statistics and the code to evaluate those three options. Plausible-looking output and correct output aren’t the same thing, and you need enough expertise to tell the difference. (We’ll talk more about this situation in the next article in the series.)
  • LLMs often overestimate complexity. At one point I wanted to add support for custom mathematical expressions in the analysis pipeline. Both Claude and Gemini pushed back, telling me, “This is scope creep for v1.0” and “Save it for v1.1.” Claude estimated three hours to implement. Because I knew the codebase, I knew we were already using asteval, a Python library that provides a safe, minimalistic evaluator for mathematical expressions and simple Python statements, elsewhere to evaluate expressions, so this seemed like a straightforward use of a library we’re already using elsewhere. Both LLMs thought the solution would be far more complex and time-consuming than it actually was; it took just two prompts to Claude Code (generated by Claude), and about five minutes total to implement. The feature shipped and made the tool significantly more powerful. The AIs were being conservative because they didn’t have my context about the system’s architecture. Experience told me the integration would be trivial. Without that experience, I would have listened to them and deferred a feature that took five minutes.
  • AI is often biased toward adding code, not deleting it. Generative AI is, unsurprisingly, biased toward generation. So when I asked the LLMs to fix problems, their first response was often to add more code, adding another layer or another special case. I can’t think of a single time in the whole project when one of the AIs stepped back and said, “Tear this out and rethink the approach.” The most productive sessions were the ones where I overrode that instinct and pushed for simplicity. This is something experienced developers learn over a career: The most successful changes often delete more than they add—the PRs we brag about are the ones that delete thousands of lines of code.
  • The architecture emerged from failure. The AI tools and I didn’t design Octobatch’s core architecture up front. Our first attempt was a Python script with in-memory state and a lot of hope. It worked for small batches but fell apart at scale: A network hiccup meant restarting from scratch, a malformed response required manual triage. A lot of things fell into place after I added the constraint that the system must survive being killed at any moment. That single requirement led to the tick model (wake up, check state, do work, persist, exit), the manifest file as source of truth, and the entire crash-recovery architecture. We discovered the design by repeatedly failing to do something simpler.
  • Your development history is a dataset. I just told you several stories from the Octobatch project, and this series will be full of them. Every one of those stories came from going back through the chat logs between me, Claude, and Gemini. With AIDD, you have a complete transcript of every architectural decision, every wrong turn, every moment where you overruled the AI and every moment where it corrected you. Very few development teams have ever had that level of fidelity in their project history. Mining those logs for lessons learned turns out to be one of the most valuable practices I’ve found.

Near the end of the project, I switched to Cursor to make sure none of this was specific to Claude Code. I created fresh conversations using the same context files I’d been maintaining throughout development, and was able to bootstrap productive sessions immediately; the context files worked exactly as designed. The practices I’d developed transferred cleanly to a different tool. The value of this approach comes from the habits, the context management, and the engineering judgment you bring to the conversation, not from any particular vendor.

These tools are moving the world in a direction that favors developers who understand the ways engineering can go wrong and know solid design and architecture patterns…and who are okay letting go of control of every line of code.

What’s next

Agentic engineering needs structure, and structure needs a concrete example to make it real. The next article in this series goes into Octobatch itself, because the way it orchestrates AI is a remarkably close parallel to what AIDD asks developers to do. Octobatch assigns roles to different processing steps, manages handoffs between them, validates their outputs, and recovers when they fail. That’s the same pattern I followed when building it: assigning roles to Claude and Gemini, managing handoffs between them, validating their outputs, and recovering when they went down the wrong path. Understanding how the system works turns out to be a good way to understand how to orchestrate AI-driven development. I’ll walk through the architecture, show what a real pipeline looks like from prompt to results, present the data from a 300-hand blackjack Monte Carlo simulation that puts all of these ideas to the test, and use all of that to demonstrate ideas we can apply directly to agentic engineering and AI-driven development.

Later articles go deeper into the practices and ideas I learned from this experiment that make AI-driven development work: how I coordinated multiple AI models without losing control of the architecture, what happened when I tested the code against what I actually intended to build, and what I learned about the gap between code that runs and code that does what you meant. Along the way, the experiment produced some findings about how different AI models see code that I didn’t expect—and that turned out to matter more than I thought they would.

14:14

13:14

CodeSOD: Qaudruple Negative [The Daily WTF]

We mostly don't pick on bad SQL queries here, because mostly the query optimizer is going to fix whatever is wrong, and the sad reality is that databases are hard to change once they're running; especially legacy databases. But sometimes the code is just so hamster-bowling-backwards that it's worth looking into.

Jim J has been working on a codebase for about 18 months. It's a big, sprawling, messy project, and it has code like this:

AND CASE WHEN @c_usergroup = 50 AND NOT EXISTS(SELECT 1 FROM l_appl_client lac WHERE lac.f_application = fa.f_application AND lac.c_linktype = 840 AND lac.stat = 0 AND CASE WHEN ISNULL(lac.f_client,0) <> @f_client_user AND ISNULL(lac.f_c_f_client,0) <> @f_client_user THEN 0 ELSE 1 END = 1 ) THEN 0 ELSE 1 END = 1 -- 07.09.2022

We'll come back to what it's doing, but let's start with a little backstory.

This code is part of a two-tier application: all the logic lives in SQL Server stored procedures, and the UI is a PowerBuilder application. It's been under development for a long time, and in that time has accrued about a million lines of code between the front end and back end, and has never had more than 5 developers working on it at any given time. The backlog of feature requests is nearly as long as the backlog of bugs.

You may notice the little date comment in the code above. That's because until Jim joined the company, they used Visual Source Safe for version control. Visual Source Safe went out of support in 2005, and let's be honest: even when it was in support it barely worked as a source control system. And that's just the Power Builder side- the database side just didn't use source control. The source of truth was the database itself. When going from development to test to prod, you'd manually export object definitions and run the scripts in the target environment. Manually. Yes, even in production. And yes, environments did drift and assumptions made in the scripts would frequently break things.

You may also notice the fields above use a lot of Hungarian notation. Hungarian, in the best case, makes it harder to read and reason about your code. In this case, it's honestly fully obfuscatory. c_ stands for a codetable, f_ for entities. l_ is for a many-to-many linking table. z_ is for temporary tables. So is x_. And t_. Except not all of those "temporary" tables are truly temporary, a lesson Jim learned when trying to clean up some "junk" tables which were not actually junk.

I'll let Jim add some more detail around these prefixes:

an "application" may have a link to a "client", so there is an f_client field; but also it references an "agent" (which is also in the f_client table, surpise!) - this is how you get an f_c_f_client field. I have no clue why the prefix is f_c_ - but I also found c_c_c_channel and fc4_contact columns. The latter was a shorthand for f_c_f_c_f_c_f_contact, I guess.

"f_c_f_c_f_c_f_c" is also the sound I'd make if I saw this in a codebase I was responsible for. It certainly makes me want to change the c_c_c_channel.

With all this context, let's turn it back over to Jim to explain the code above:

And now, with all this background in mind, let's have a look at the logic in this condition. On the deepest level we check that both f_client and f_c_f_client are NOT equal to @f_client_user, and if this is the case, we return 0 which is NOT equal to 1 so it's effectively a negation of the condition. Then we check that records matching this condition do NOT EXIST, and when this is true - also return 0 negating the condition once more.

Honestly, the logic couldn't be clearer, when you put it that way. I jest, I've read that twelve times and I still don't understand what this is for or why it's here. I just want to know who we can prosecute for this disaster. The whole thing is a quadruple negative and frankly, I can't handle that kind of negativity.

[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!

11:49

Hacked App Part of US/Israeli Propaganda Campaign Against Iran [Schneier on Security]

Wired has the story:

Shortly after the first set of explosions, Iranians received bursts of notifications on their phones. They came not from the government advising caution, but from an apparently hacked prayer-timing app called BadeSaba Calendar that has been downloaded more than 5 million times from the Google Play Store.

The messages arrived in quick succession over a period of 30 minutes, starting with the phrase ‘Help has arrived’ at 9:52 am Tehran time, shortly after the first set of explosions. No party has claimed responsibility for the hacks.

It happened so fast that this is most likely a government operation. I can easily envision both the US and Israel having hacked the app previously, and then deciding that this is a good use of that access.

11:28

Grrl Power #1440 – Gambledämmerung [Grrl Power]

I want to know what Cora’s Hard Light Holo-Projection interface looks like that she can spontaneously select a sword and have it appear to grow out of her cleavage, all without missing a beat in her conversation. I imagine her eyes dart around a bit while she’s talking when she does something like that. On the other hand her hardlight limbs are obviously tied right into her motor cortex, and presumably she has proprioception and touch feedback hard wired into her brain as well, so it’s entirely possible that she can just imagine what she wants to happen, then commit to it by flexing her prefrontal cortex just so.

I don’t know a lot about betting, but on Tom’s screen there, he was prepared to bet on Max to win the entire tournament, which of course would be much longer odds than betting on her to win each round, one at a time. Well, statistically, I think the actual mathematical odds would be the same, but I’m sure the bookies weigh things differently and always slightly in their favor than pure math would allow. But really… how do you even set the odds of such a thing anyway? If you had massive amounts of data on all the fighters in the tournament, like a hundred fights against all sorts of different opponents, you might be able to put together some sort of in-the-ballpark statistical model, but “Ixah” is a total unknown, as are a few of the other remaining competitors, so I assume the odds at this point are derived mostly from gut feelings?

I put the odds on her to win the entire tournament at 7:1. She has to actually win this round, of course, then there’s the semi-final against seven more, presumably tougher opponents, and then the final is another 8 person Battle Royale. (I think, I haven’t actually totally finalized that in my head.) But 7:1 is probably pretty generous, even though she effectively eliminated 3 of the other competitors herself by showing off a lot of strength and even a little tactical acumen by neutralizing the singularity spell with another opponents attack. I’d guess at the beginning of the round, her odds of winning just this round would have been at 8:1 since she was an unknown… or maybe a little worse, since the bookies would be favoring UMBRage and Kill-7? Again, I don’t really know how that stuff is figured. But her odds of winning the entire tournament at that point might have been mathematically 512:1, but the bookies probably wouldn’t have given better odds than like 24:1 maybe?

I know the odds in gambling isn’t set entirely by statistical models, the amount of money in the pot also is a big factor, and I think the odds are actually limited by what it’s possible to pay out. At least, in “reputable” gambling forums. If someone bets $10 million on a pot that’s already only $1 million, the odds might shift to 1.1:1 maybe, despite how much of a long shot that three legged horse is to win? Maybe it’s possible the house will actually contribute to a pot, cause they take a fee to process all the bets or something, and that could sweeten the potential payout? I don’t know.

But Cora and friends placed their bets at the beginning of the tournament for her to sweep the whole thing, so they’re going to make bank if she pulls it off. They probably also placed smaller bets for her to win each round, that way they don’t lose everything if she gets knocked out in the semi-finals.

A tournament like this would also have all kind of weird other gambling going on, like wagering on how many total decapitations or incineration or whatever else occurs.


Ah! I thought I had more time till March. I’m bad at looking at dates apparently. The new one is underway. I should have a draft ready to go for the next Monday comic?

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.

10:42

Imagination is work [Seth's Blog]

We spend most of the time we’re in school extinguishing imagination. “Will this be on the test?” is a much more common question than “What if?” We’ve been trained to do tasks in a factory.

Imagination is a skill and it takes effort.

It’s not useful to say, “I’m not imaginative.”

It’s more accurate to realize that we might not care enough to get good at it, or to put in the effort it takes.

As tasks continue to be automated, the hard work of imagination is worth investing effort in.

06:28

Urgent: Stop big news merger [Richard Stallman's Political Notes]

US citizens: call on Congress and the FCC to protect local news, by blocking the Nexstar-TEGNA merger.

Urgent: Planantir immigrant surveillance [Richard Stallman's Political Notes]

US citizens: Call on Congress to stop the deportation thug department from using Palantir's massive surveillance system to track and target immigrants.

Urgent: Palantir's congressional funding [Richard Stallman's Political Notes]

US citizens: call on your congressional officials not to accept campaign funds from Palantir.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Climate science [Richard Stallman's Political Notes]

Everyone: Tell the IEA: Ignore Chris Wright’s Threats, Follow the Science on Climate Change.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

04:42

Link [Scripting News]

What if friends treated their friends as nicely as they treat dogs. When you sensed they needed a little support, you'd look them in the eye and say "Who's the good girl?" Rub behind the ears. When they sit give them a treat. Inside of us, everyone, including you, is a little pup who just wants to know they're in the right place doing the right thing.

04:14

Medalists [QC RSS]

well SOMEONE has to keep her in check

02:28

Exodized [Penny Arcade]

Here is the second Child's Play Strip! We decided to go diegetic wit it.

02:07

[$] LWN.net Weekly Edition for March 5, 2026 [LWN.net]

Inside this week's LWN.net Weekly Edition:

  • Front: Python's bitwise-inversion operator; atomic buffered I/O; keeping open source open; Magit and Majutsu; IIIF; free software and free tools.
  • Briefs: Ad tracking; firmware updates; TCP zero-copy; Motorola GrapheneOS phones; Gram 1.0; groff 1.24.0; Texinfo 7.3; Quotes; ...
  • Announcements: Newsletters, conferences, security updates, patches, and more.

Wednesday, 04 March

23:28

Lock scroll with a vengeance [OSnews]

What’s the scroll lock key actually for?

Scroll Lock was reportedly specifically added for spreadsheets, and it solved a very specific problem: before mice and trackpads, and before fast graphic cards, moving through a spreadsheet was a nightmare. Just like Caps Lock flipped the meaning of letter keys, and Num Lock that of the numeric keypad keys, Scroll Lock attempted to fix scrolling by changing the nature of the arrow keys.

↫ Marcin Wichary

I never really put much thought into the scroll lock key, and I always just assumed that it would, you know, lock scrolling. I figured that in the DOS era, wherein the key originated, it stopped DOS from scrolling, keeping the current output of your DOS commands on the screen until you unlocked scrolling again. In graphical operating systems, I assumed it would stop any window with scrollable content from scrolling, or something – I just never thought about it, and never bothered to try.

Well, its original function was a bit different: with scroll lock disabled, hitting the arrow keys would move the selection cursor. With scroll lock enabled, hitting the arrow keys would move the content instead. After reading this, it makes perfect sense, and my original assumption seems rather silly. It also seems some modern programs, like Excel, Calc, some text editors, and others, still exhibit this same behaviour when the scroll lock key is used today.

The more you know.

Negative Creep [The Stranger]

Smoke anywhere else. by Anonymous

Hey, '90s throwback guy: Your cigarette smoke is gross. And I hate having to walk through it to get my coffee.

You’ve been asked—politely—by staff and customers to move. There is signage. There are coughs. There are stares. Yet you remain.

It’s peak Hill. A neighborhood that prides itself on being considerate—but when it comes to shared air, asking someone not to hotbox the doorway is apparently a controversial take.

We all share the sidewalk. We all share the air. The NO SMOKING sign is not a vibe check. It’s a rule. You are not bravely disrupting the system. You are just making everyone smell like 2003.

Newsflash: You are not the main character. Standing in the doorway, smoking like this? It’s giving entitled vibes—and that’s not a good look.

Please take an extra 20 steps. Smoke anywhere else. Capitol Hill is not short on corners.

Sincerely,

Someone Who Would Like Their Cortado Without a Side of Marlboros

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.

22:42

The new MacBook Neo is a great deal in the US, not so much in Europe [OSnews]

Apple today announced the “MacBook Neo,” an all-new kind of low-cost Mac featuring the A18 Pro chip for $599.

The MacBook Neo is the first Mac to be powered by an iPhone chip; the A18 Pro debuted in 2024’s iPhone 16 Pro models. Apple says it is up to 50% faster for everyday tasks than the bestselling PC with the latest shipping Intel Core Ultra 5, up to 3x faster for on-device AI workloads, and up to 2x faster for tasks like photo editing.

The MacBook Neo features a 13-inch Liquid Retina display with a 2408-by-1506 resolution, 500 nits of brightness, and an anti-reflective coating. The display does not have a notch, instead featuring uniform, iPad-style bezels.

↫ Hartley Charlton at MacRumors

There’s no denying this is a great offering from Apple, and it’s going to sell really well, especially in the US. I can’t think of any other laptop on the market that offers this kind of complete package at such an attractive price point – on the Windows side, you’re going to get plastic laptops with worse displays, worse battery life, and, well, Windows. For education buyers, the price drops from $599 to $499, making it a no-brainer choice for families sending their kids off to high school or university.

In the US, at least. Here in Europe, or at least in Sweden where I checked the price of the base model, it’s going for almost €800 ($930), at which point the cost-cutting measures Apple has taken are a bit harder to swallow. At that kind of price point, I’m not going to accept a mere 8GB of RAM, 256GB of storage, and a paltry 60Hz display. When I saw the announcement of this new MacBook earlier today, I wondered if this could be my way of finally getting a macOS review on OSNews after well over a decade, but at €800 for something I won’t be using after I’m done with the review? I can’t justify that.

Regardless, you’re going to see tons of these in schools and in wrapping paper for the holiday season and birthdays, and at least at American pricing, it’s definitely a great deal.

21:56

A Cut Above [The Stranger]

Meaty finger waves. by Meg van Huygen

It’s prep shift at Hamdi, and the room smells like fire. Winter sunlight filters in, and there’s a faint hum of spices in the charred air. Chef Berk Güldal is giving a private tutorial on making Turkish Adana-style kebap—aka kebab—a meticulous, laborious two-day process that plumps up these peppery lamb skewers.

Hand-mincing kebap is considered an art form in Southwest Asia, but this time-consuming process is being practiced less and less these days—even in Turkey, and certainly here in Seattle. Güldal, however, has all the time in the world to practice this thousand-year-old culinary craft.

Hamdi opened in 2021 as a Turkish food truck and moved into its beautiful, simple fine-dining space on Leary Way the following year. Güldal and his partner, Katrina Schult, had spent their careers in Michelin-starred restaurants—in Güldal’s hometown of Istanbul as well as NYC and Healdsburg, California, among other places—before peacing out to starless, Michelin-free Seattle to do their own thing.

That thing is fire. “We don’t have gas ranges,” Güldal says. “It’s all fire—wood or charcoal.” Low flames and embers burn here and there under grills around the open kitchen. It’d be a waste to NOT make kebap here.

The artist’s tools are a butcher block, a scraper, and a giant medieval-looking Turkish zirh (“zuh-ruh”). Genetically somewhere between a machete and a Bowie knife, it looks like the weapon your orc-slaying half-paladin/half-rogue D&D character carries. A fantasy knife.

I ask him if he bought it in Turkey, and he says, “No. I got it on Etsy.”

Güldal holds his colossal knife with both hands. A few pieces of suet—the hard fat that surrounds a lamb’s kidneys—sit in a ninth pan. He utilizes the zirh as a parer, deftly removing the silverskin enclosing each parcel of fat. “In Turkey,” he says, “they use tail fat for kebap. But it’s a different kind of lamb with a much bigger tail. It’s like a second butt.” However, America’s lambs aren’t quite as caked up, so Hamdi uses suet instead.

It’s no compromise. “To be honest, this lamb right here is the best lamb ever,” Güldal boasts. “We don’t need the tail.” Hamdi sources lamb from Anderson Ranches, 30 minutes outside Eugene, Oregon. “I cooked a lot of lamb in New York and California, at Michelin restaurants? I never tasted any lamb like this lamb.”

Güldal adds that Hamdi only uses grass-fed lamb, so Anderson Ranches is a natural choice, where free-range sheep and lambs graze on pasture ryegrass, herbs, and flowering forbs. “I really believe that grass-fed meat is the best, most nutritious food for your body,” he says. “It’s more chewy. It’s not gonna melt in your mouth. That’s why it’s great for kebap.”

The artist’s canvas is a massive wooden butcher’s block. This one was custom-made by Lee Andrews, a woodcarver in Walla Walla. “This artist told us this block’s gonna survive like four generations,” Güldal says. “Plastic just breaks.”

He sets the snow-white suet chunks on the block, then places his two-foot blade alongside them. Carefully but powerfully, he lifts the knife’s handle up and out, like a crank on a water pump, pinching the back of the blade with his other hand. He slides it back and forth over the pile for what seems like 20 minutes but is probably like five.

After Güldal pulverizes the suet into a hill of crumbles, Schult brings over some rough-chopped lamb belly, cold from the fridge, where it’s been aged for 24 hours. He begins delicately smithereening it with the same precise skill: slicing motions, not crushing motions. Sounds simple, but it really is a complex physical performance, requiring minute movements to flick and flex this heavy sword. Controlled strength as art. I could watch him do this all day.

“The purpose of this knife is to slice,” Güldal says. “When you put meat in a grinder—how most people do kebap now—it smooshes it, and it becomes very sticky and soft and loses texture. But here, you use a very sharp knife like this one, moving it minimally to slice, not chop.”

He adds that a grinder creates a dry kebap. “Not as juicy. And the texture this way is gonna be very coarse. Not, like, smooshed.” That coarseness creates more edges and facets to be Maillarded later.

After mincing the meat and fat separately, Güldal does the same to a red bell pepper. Then he methodically kneads the pepper, lamb belly, and suet together to create binding protein structures. “Another thing,” he says, after wordlessly kebapping for a while, “is that you don’t wanna use gloves to do this. Because then it tastes like gloves. I believe the flavor of your hand needs to go in the food.”

Güldal produces a speckled loaf of mince. Now it’s time to season: paprika, Turkish pepper flakes, and salt. He pulls out a sheet pan of lined-up skewers, specifying that they must be iron, not aluminum, and starts fleshing out the metal skeletons.

The meat football gradually disappears as Güldal applies it to the skewers, punctilious, his fingers tantamount in his arsenal to his big-ass knife. We simmer in the piano lick from “Ms. Jackson” on the aux as he shapes the mince. Per tradition, he’s giving the kebap a subtly scalloped pattern, for both Mailliard reaction and artisanal reasons. Meaty finger waves.

And that’s it. They’re ready to hit the charcoal. The raw skewers look kinda pixelated, since unrendered suet is so brittle, but it’ll liquefy into nutty, golden, umami-tinged tallow on the grill, like lamby compound butter. It’s the art of suspense. A delicious future promise.

When asked if doing this makes him feel like an ancient person from a thousand years ago, Güldal frowns. “No! I believe we should still do these things today, not just in ancient history. I actually think everything has gotten too modern, too easy. I think we’re losing the fun part.”

Güldal takes a beat to admire his handiwork, then nods solemnly. “This is the fun part.”

21:14

Link [Scripting News]

We had a problem today with one of the servers, it meant a bunch of services weren't working. Never found the actual problem, but something changed and the misbehaving server started working. Learned a lot about managed databases on Digital Ocean.

20:21

Why Workers at One of Seattle’s Hottest Restaurants Went on Strike [The Stranger]

Court documents show that behind the scenes, Sophon and chef Karuna Long struggled financially for years, resulting in bounced paychecks, late payments to vendors, unpaid rent, and lawsuits. by Harry Cheadle

On February 10, Sophon—one of Seattle’s hottest, hippest restaurants—announced on its Instagram stories that it would be canceling its dinner service that night. It stayed closed through Valentine’s Day weekend, one of the industry’s busiest stretches, because of financial difficulties and tensions between Sophon’s staff and owner, Karuna Long, that were spilling into public for the first time.

Employees were refusing to come to work because they hadn’t been paid. Long put up, and then deleted, an Instagram post admitting he owed money to staff and vendors. "I have no idea what I'm doing and cannot seem to figure what's up and what's down," he wrote. Days later, in a series of Instagram posts, general manager Moni Mitchell announced that the staff had resigned and accused Long of “documented financial mismanagement.”

This is a shocking turn of events for anyone who knows Sophon’s reputation. One of the only Khmer restaurants in Seattle, it is the kind of place that gets included on every “best of” list, renowned for its Cambodian-influenced cocktails and dedication to uplifting Khmer culture. But court documents, and interviews with Long and six of his former employees, show that behind the scenes, both Sophon and Long’s nearby, now closed bar Oliver’s Twist struggled financially for years, resulting in bounced paychecks, late payments to vendors, unpaid rent, and lawsuits. The former employees quoted in this article all asked to remain anonymous because of worries about professional repercussions.

Before Sophon, Long made a name for himself in the bar scene with Oliver’s Twist, a Phinney Ridge bar that he bought in 2017. During the COVID pandemic, he experimented with serving food influenced by his Khmer heritage. When that food was a hit, he announced Sophon, his dream project, which has been a pillar of the Seattle dining scene since it opened in 2024. 

Long’s compelling vision for a restaurant drew the exceptional people to staff it, and soon his vision became a reality. He struck many of them initially as charismatic, funny, and progressive, former staff said. “He came off very kind and warm,” says one former employee. “A lot of us were really excited about Sophon’s story.” 

But Long also had a way of “sugarcoating” things, as one former employee put it. Multiple employees say that he would often make excuses for missing scheduled meetings or why payments were late or why the refrigerators went out.

They were picking up on a pattern that Long himself was aware of. In an email to The Stranger, Long said that he’s dealt with “a personal internal battle for 30 years having to do with my clinical depression and ideations of suicide. When I’m overwhelmed, I unfortunately tuck my head in the sand and have avoided issues.”

Long’s financial troubles started before Sophon. In 2021, Long brought in two business partners, Joel Robinson and Waylon Puckett, who invested tens of thousands of dollars into the newly reopened Oliver’s Twist and the opening of Sophon. 

Last year, Robinson and Puckett sued Long for breach of contract and fraud. They allege that Long forged Robinson’s signature on contracts with restaurant vendors, failed to contribute promised money to the business (where Long was the majority owner), and used the business bank account to pay for his personal life, which, the suit alleges, “included withdrawals to pay for online gambling as well as paying his personal utilities.”

Long says he wasn’t taking any salary when Sophon opened and was in the habit of using Oliver’s Twist money to pay his expenses when he owned the bar by himself. He says he “failed to remember that I now have partners, therefore, any cost of living/personal utilities should go through proper processes.” Long also admitted to forging Robinson’s signature on contracts with vendors, however, writing in an email that “I made a lapse in judgment in doing so because my partners were unavailable.” But he denies lying to his partners or not contributing funds to the partnership. (Robinson and Puckett declined to comment on the contents of the suit.)

The suit also claims Long hid his debts from his partners. Attached to the lawsuit is a 2024 letter from a debt collection agency saying that the business owed $1.1 million as a result of an unpaid $879,000 COVID Economic Injury Disaster Loan that had accrued interest and fees. Among the other debts incurred by the business was the approximately $30,000 it owed to a financial services company after selling a portion of its future receipts; that company sued Oliver’s Twist for missed payments and won the case in 2023. In May 2024, according to the lawsuit, the three partners met and agreed that Oliver’s Twist should enter Chapter 11 bankruptcy, but it is unclear if that ever happened. Long declined to comment on the bankruptcy.

Robinson and Puckett attempted to settle the case through arbitration, according to court records, but are now seeking a default judgement against Long because they haven’t been able to schedule an arbitration sessions, the records show. Long declined to comment about the current status of the lawsuit or whether he is being represented by an attorney.

Oliver’s Twist had also fallen behind on its rent. By May 2024, the bar owed its landlord over $120,000, according to court records, and after Long renewed the lease he missed more payments. In December, the landlord initiated eviction proceedings against Oliver’s Twist. By then, the bar had been closed for two months. 

According to Long, Oliver’s Twist closed because “business was too slow and rent was too high.” (He also characterized the closure as temporary in an interview with the Seattle Times, saying the bar was “on its way to closing” permanently.) 

Former employees say the bar wasn’t paying vendors on time. More than one say that it went through stretches of not serving any food beyond popcorn, which they worried was against Seattle law.

One bartender says that after multiple missed paychecks, the Oliver’s Twist team began to leave until he was the only one left. He went over a month at a time without getting any pay himself, he says. “It ended up being kind of a social experiment for myself, because I had nothing better to do, to see what it's like to go work in the industry as a bartender without getting any compensation,” he says. “Because no more candles were being delivered, I was actually taking up candlemaking as a hobby and recycling the paraffin wax and making more candles. And I was actually having a pretty good time by myself.” 

Long eventually paid him the wages he was owed, he says. Former employees say, and Long admits, that there were two cooks who had not been paid for their work as of February.

Despite Sophon’s high-profile success, it had similar problems. 

In the spring of 2025, five former employees say, the restaurant switched from a direct deposit system to distributing checks every pay period. But workers soon began complaining their checks were bouncing or being placed on hold by their banks, according to screenshots of text messages and photos seen by The Stranger, and the complaints intensified into the summer. 

“There was an extended period of time where by the time another two week pay period came to an end, multiple employees were still waiting for their previous paycheck to be deposited, or waiting for the hold placed on them to expire,” said one employee in a statement to The Stranger, adding that by August, workers were demanding cashier’s checks because they assumed regular checks wouldn’t clear. (Long says that the cashier's checks were costing him $8 apiece.) Former employees also said that Long was slow to repair broken fridges—including a CO2 leak in the keg cooler, two employees say—stopped paying for the city to pick up recycling, and that W-2 tax forms for the 2024 year didn’t reflect their correct hours. In one case, an employee emailed Long to say that she only made a third of the income that was listed on the W-2.

Mitchell, the general manager, has accused Long on Instagram of allowing employees’ health insurance coverage to lapse, even though they continued to have premiums taken out of their paychecks. In one instance, according to screenshots seen by The Stranger, an employee found out about the lapse from a letter from their insurance company, after they'd already sought medical care.

Tensions came to a head when Mitchell went on a trip to Cambodia in January, leaving it up to Long to process payroll. Two staffers say they did not get paid but worked the first weekend of February anyway; one former employee says that Long told them he wouldn’t have the money to pay them unless the restaurant re-opened. “At this point, we've been through so many things with him,” one employee says. “We're not feeling like we're going to get paid, and it's the last straw, and the communication is really bad.”

On February 10 and 11, Long decided to close Sophon, this employee says. He also told the staff that there was a hold on the business account, former employees say. When some employees tried to sign up for unemployment, they discovered that they couldn’t, because their hours had not been properly reported to the state. (Long says this resulted from a “lapse in taking care of my tasks accordingly.”)

In the midst of all of that, most of the staff went on “strike,” as they put it, demanding Long fix their paperwork so they could collect unemployment and pay employees what they were owed, including the two former cooks at Oliver’s Twist.

Long and his staff met on February 17, and he handed out about $20,000 in cash (so Long could avoid cashier’s checks fees). Long says that he has updated the paperwork with the Washington State Employment Security Department and that former employees should be able to collect unemployment. But with the cooks unpaid and Long not communicating with the employees to their satisfaction, most of the staff resigned February 20. “As far as we are concerned, the employment relationship is severed due to his breach of contract and labor laws,” Mitchell wrote in an email.

Long says that he is working on paying the Oliver’s Twist employees. He reopened Sophon last Tuesday with mostly new hires along with some employees who did not go on strike, he says. Mitchell describes the current staff as a “skeleton crew,” writing in an email that “the entire original team that built the restaurant’s reputation has walked away.”

Those who quit may not miss the chaos, but many will miss one another. 

“We supported each other through a lot of hard, personal stuff,” says a former employee who began working at Sophon not long after it opened. “That’s a piece of it—this community and these beautiful relationships that I'm walking away with, which feels like the silver lining. And I think the other piece is a lot of sadness and a lot of anger and grief. I feel like we had something really special. This restaurant could have been perfect.”

Permanent Records [The Stranger]

Local Physical Media Producers Defy the Algorithmic Overlords
by Todd Hamm

In 1984, American science fiction writer William Gibson defined “cyberspace” (a term he coined) as “a consensual hallucination experienced daily by billions of legitimate operators” in the near-future world of his novel, Neuromancer, where human consciousness drifts through a blinding data-world of corporate geometries.

More than three decades later, the English documentarian Adam Curtis traced how that hallucination became reality in his BBC documentary HyperNormalisation: “Over the past 40 years, politicians, financiers, and technological utopians—rather than face up to the real complexities of the world—retreated. Instead, they constructed a simpler version of the world in order to hang onto power, and as this fake world grew, all of us went along with it, because the simplicity was reassuring.”

Today, this “simpler version of the world” fits into our pockets. The average American now spends around five hours per day—about 2.5 months per year—on their smartphone. Most artists now depend on social media for visibility, and a small handful of tech companies now determine how culture is discovered and monetized. Whether you experience this moment as a dystopian technocratic existence, an interconnected digital wonderland, or some incredibly boring third thing, technology doesn’t just permeate most every facet of life, it intercepts substantial chunks of the day, warps tastes, and short-circuits human interaction.

It’s true that within many artistic fields, digital tools have made an extraordinary amount of art possible and accessible, but there is also the reality that the hyper-integration of technology has left the door open too wide for manipulation by powerful corporations, and has encouraged isolation between artists and audiences.

“Take Spotify, for example,” says Aaron C. Schroeder, owner and recording engineer of Pierced Ears Recording Co.—a tiny yet wondrous basement studio in the Ballard neighborhood. “They bury musicians that don’t pay them money to get promotions on playlists,” he says, referring to the streaming service’s forcing of lower royalty rates on artists to be included on “Discovery” playlists, a practice that bears striking resemblance to the radio “payola” schemes that were outlawed by Congress in 1960. “I just don’t like having someone else in control. And then how do you get people to hear you in a digital space? Well, now you have to promote in a digital space, so now we’re stuck on social media constantly. A false reality of a sort, or a second reality. And I’m analog.”

On a recent Sunday morning, Schroeder invited me to his studio to show me the workings of his Presto 8N vinyl lathe, an original from the 1940s. It “cuts” records in real time, a process in which a Van Eps Duotone cutter head—a needle-like device on an adjustable arm—carves sound vibrations into a soft vinyl disc (or record blank) in the form of the continuous spiral grooves, which your home record player needle then traces back into sound.

“You can really record any sound onto the record,” he explains. We discuss his ideas for hosting pop-ups around town where anyone can record anything they want on the spot and take home the record, and his ideas for bespoke groove patterns, like recording the record from the center outward, or in sequential spirals.

Schroeder uses a mix of digital and analog recording technologies, and maintains a website for his studio and business-only Instagram and TikTok accounts for minimalist marketing (“It’s like Backpage”), but he talks of tech devices and programs as though they are only one kind of tool among many, the amount of importance we have placed on them being unfortunate. The idea that a platform could change their business model or simply close shop if profits dried up, essentially deleting the most visible evidence of musicians’ artistic output, is also a possibility that haunts Schroeder. If that happens, “who’s to say you ever existed?”

Kelly Froh, executive director of Short Run Comix festival-turned-nonprofit, is among the many people I spoke with who think physical media—things like handmade books, visual art, hand-drawn comics and zines, vinyl records and cassette tapes—and the communities they spawn provide a necessary counterbalance to tech domination in the arts. “Why do any of these smaller festivals exist if we can just buy whatever we want online? It’s so you can show up, and you can actually look into the eyes of the artist, and talk to the artist, to the person that made these books.”

Froh is a firm believer in real-life settings where you can meet the artist at the point of purchase, and likely come away with personal artist recommendations, a newfound knowledge and appreciation for the time and techniques that go into the art form, and make any number of person-to-person connections—all weaknesses of the digital marketplace.

The online environment also gives the false sense of infinite choices and egalitarian platforming, when in reality, online algorithms (not to mention governments) suppress many artists and voices if you don’t follow their guidelines, both stated and unstated, before the general public even has a chance to click on them.

With physical media, however, “there’s no need to censor yourself,” Froh says. “If you were to promote something on the internet, you would have to block out certain words so the post doesn’t get buried. I don’t want to think about any of that shit. Just do your own thing.”

Froh also sees organizational potential in physical formats for off-the-grid information sharing in times of political or social turmoil: “Zines are untrackable in that way, and they’re not gonna be blocked by some evil algorithm.” She continues, “For people who feel helpless as our democracy is crumbling, guess what? They’re screen printing posters, they’re making pins and buttons, they’re making zines and fliers, posters on poles.” Indeed, at a recent anti-ICE rally on Capitol Hill, organizers were handing out keychain whistles packaged with a zine that outlined the whistle’s uses and whom to contact if officers are spotted; on a recent trip to Hex Enduction Records & Books in Lake City, I left with a tour guide zine for safe small-town queer hangouts, and leafed through an impressive hand-bound book about anarchism and “settler socialism.”

James Ballinger, who ran the influential heavy-rock-focused Seattle music zine The Seattle Passive Aggressive during its decade-long run in the 2010s, agrees that physical media is an important part of the social ecosystem. “It keeps things true, and it keeps things away from [that] kind of outside influence, or a fear of saying things that’ll make people upset, or [come off as too] political. I print it, I can’t go back and change it, or delete it. I can’t go back and edit that typo, it’s out there. Technology’s weird, and social media has made people weird as far as what they feel they’re free to say. So I think zine culture is important, because you can say what you need to say, get it out there.” Ballinger also takes issue with the thoughtlessness that social media rewards through ambiguous reposts and bandwagon “likes.” Conversely, physical media “allows you to not just say what you want to say because you’re passionate about it; you have to collect your thoughts and say things intelligently.”

Across town at Concuss Creations screen printing, local musician and artist Rob Castro prints band merch on the same press as protest swag. “Since I print my own shirts out of my own shop, I can basically print anything I dream of. If I want to flex a run of protest tees before a march, I can do that.”

Kay Redden, founder and operator of Seattle cassette-tape label Den Tapes, likens the choice to interact with physical media to shopping local, given the increasingly competitive attention economy of today: “It’s kind of like voting with your dollar, like when you’re opting to support a local business rather than go to Home Depot or whatever.” In this way, devoting time to the making or consuming of physical art can be seen as a net positive in the war over our time and data points—each non-technological activity we participate in has become an act of micro-revolution.

Back in the Pierced Ears studio, Schroeder is walking me through the process of folding a zine. Using scissors, he cuts a slit across the middle of a halved 8”x11” piece of paper, then accordions it into eighths. The result is a miniature flipbook complete with quirky yet informative diagrams showing the step-by-step process of recording a record on his equipment. He puts one in the sleeve of each record he cuts.

“It is a problem in every aspect of Western civilization,” he says. “We use tools to try and make things we consider to be beautiful, but I think we have corrupted the concept of beauty. The natural world is what’s actually beautiful, a manicured lawn, not so much… I’m a fan of music with edges.” I suggest that an ideal metaphor may be a Zen garden, where humans manipulate natural elements with tools, but the tools aren’t pesticides that are supposed to kill any imperfections.

After thinking for a moment, he answers, “We’re just doing an odd beautification ritual. I don’t think everything looking the same is the correct answer.”

19:42

The “Data Center Rebellion” Is Here [Radar]

This post first appeared on Ben Lorica’s Gradient Flow Substack newsletter and is being republished here with the author’s permission.

Even the most ardent cheerleaders for artificial intelligence now quietly concede we are navigating a massive AI bubble. The numbers are stark: Hyperscalers are deploying roughly $400 billion annually into data centers and specialized chips while AI-related revenue hovers around $20 billion—a 20-to-1 capital-to-revenue ratio that stands out even in infrastructure cycles historically characterized by front-loaded spending. To justify this deployment on conventional investment metrics, the industry would need a step change in monetization over a short window to make the numbers work.

While venture capitalists and tech executives debate the “mismatch” between compute and monetization, a more tangible crisis is unfolding far from Silicon Valley. A growing grassroots opposition to AI data centers remains largely below the radar here in San Francisco. I travel to Sioux Falls, South Dakota, a few times a year to visit my in-laws. It’s not a region known for being antibusiness. Yet even there, a “data center rebellion” has been brewing. Even though the recent attempt to overturn a rezoning ordinance did not succeed, the level of community pushback in the heart of the Midwest signals that these projects no longer enjoy a guaranteed green light.

This resistance is not merely reflexive NIMBYism. It represents a sophisticated multifront challenge to the physical infrastructure AI requires. For leadership teams planning for the future, this means “compute availability” is no longer just a procurement question. It is now tied to local politics, grid stability, water management, and city approval processes. In the course of trying to understand the growing opposition to AI data centers, I’ve been examining the specific drivers behind this opposition and why the assumption of limitless infrastructure growth is colliding with hard constraints.

The grid capacity crunch and the ratepayer revolt

AI data centers function as grid-scale industrial loads. Individual projects now request 100+ megawatts, and some proposals reach into the gigawatt range. One proposed Michigan facility, for example, would consume 1.4 gigawatts, nearly exhausting the region’s remaining 1.5 gigawatts of headroom and roughly matching the electricity needs of about a million homes. This happens because AI hardware is incredibly dense and uses a massive amount of electricity. It also runs constantly. Since AI work doesn’t have “off” hours, power companies can’t rely on the usual quiet periods they use to balance the rest of the grid.

The politics come down to who pays the bill. Residents in many areas have seen their home utility rates jump by 25% or 30% after big data centers moved in, even though they were promised rates wouldn’t change. People are afraid they will end up paying for the power company’s new equipment. This happens when a utility builds massive substations just for one company, but the cost ends up being shared by everyone. When you add in state and local tax breaks, it gets even worse. Communities deal with all the downsides of the project, while the financial benefits are eaten away by tax breaks and credits.

The result is a rare bipartisan alignment around a simple demand: Hyperscalers should pay their full cost of service. Notably, Microsoft has moved in that direction publicly, committing to cover grid-upgrade costs and pursue rate structures intended to insulate residential customers—an implicit admission that the old incentive playbook has become a political liability (and, in some places, an electoral one).

AI scale-up to deployable compute

Water wars and the constant hum

High-density AI compute generates immense heat, requiring cooling systems that can consume millions of gallons of water daily. In desert municipalities like Chandler and Tucson, Arizona, this creates direct competition with agricultural irrigation and residential drinking supplies. Proposed facilities may withdraw hundreds of millions of gallons annually from stressed aquifers or municipal systems, raising fears that industrial users will deplete wells serving farms and homes. Data center developers frequently respond with technical solutions like dry cooling and closed-loop designs. However, communities have learned the trade-off: Dry cooling shifts the burden to electricity, and closed-loop systems still lose water to the atmosphere and require constant refills. The practical outcome is that cooling architecture is now a first-order constraint. In Tucson, a project known locally as “Project Blue” faced enough pushback over water rights that the developer had to revisit the cooling approach midstream.

Beyond resource consumption, these facilities create a significant noise problem. Industrial-scale cooling fans and backup diesel generators create a “constant hum” that represents daily intrusion into previously quiet neighborhoods. In Florida, residents near a proposed facility serving 2,500 families and an elementary school cite sleep disruption and health risks as primary objections, elevating the issue from nuisance to harm. The noise also hits farms hard. In Wisconsin, residents reported that the low-frequency hum makes livestock, particularly horses, nervous and skittish. This disrupts farm life in a way that standard commercial development just doesn’t. This is why municipalities are tightening requirements: acoustic modeling, enforceable decibel limits at property lines, substantial setbacks (sometimes on the order of 200 feet), and berms that are no longer “nice-to-have” concessions but baseline conditions for approval.

The $3 trillion question(enlarge)

The jobs myth meets the balance sheet

Communities are questioning whether the small number of jobs created is worth the local impact. Developers highlight billion-dollar capital investments and construction employment spikes, but residents focus on steady-state reality: AI data centers employ far fewer permanent workers per square foot than manufacturing facilities of comparable scale. Chandler, Arizona, officials noted that existing facilities employ fewer than 100 people despite massive physical footprints. Wisconsin residents contrast promised “innovation campuses” with operational facilities requiring only dozens to low hundreds of permanent staff—mostly specialized technicians—making the “job creation” pitch ring hollow. When a data center replaces farmland or light manufacturing, communities weigh not just direct employment but opportunity cost: lost agricultural jobs, foregone retail development, and mixed-use projects that might generate broader economic activity.

Opposition scales faster than infrastructure: One local win becomes a national template for blocking the next project.

The secretive way these deals are made is often what fuels the most anger. A recurring pattern is what some call the “sleeping giant” dynamic: Residents learn late that officials and developers have been negotiating for months, often under NDAs, sometimes through shell entities and codenames. In Wisconsin, Microsoft’s “Project Nova” became a symbol of this approach; in Minnesota’s Hermantown, a year of undisclosed discussions triggered similar backlash. In Florida, opponents were furious when a major project was tucked into a consent agenda. Since these agendas are meant for routine business, it felt like a deliberate attempt to bypass public debate. Trust vanishes when people believe advisors have a conflict of interest, like a consultant who seems to be helping both the municipality and the developer. After that happens, technical claims are treated as nothing more than a sales pitch. You won’t get people back on board until you provide neutral analysis and commitments that can actually be enforced.

Data center in the community

From zoning fight to national constraint

What started as isolated neighborhood friction has professionalized into a coordinated national movement. Opposition groups now share legal playbooks and technical templates across state lines, allowing residents in “frontier” states like South Dakota or Michigan to mobilize with the sophistication of seasoned activists. The financial stakes are real: Between April and June 2025 alone, approximately $98 billion in proposed projects were blocked or delayed, according to Data Center Watch. This is no longer just a zoning headache. It’s a political landmine. In Arizona and Georgia, bipartisan coalitions have already ousted officials over data center approvals, signaling to local boards that greenlighting a hyperscale facility without deep community buy-in can be a career-ending move.

The US has the chips, but China has centralized command over power and infrastructure.

The opposition is also finding an unlikely ally in the energy markets. While the industry narrative is one of “limitless demand,” the actual market prices for long-term power and natural gas aren’t spiking but are actually staying remarkably flat. There is a massive disconnect between the hype and the math. Utilities are currently racing to build nearly double the capacity that even the most optimistic analysts project for 2030. This suggests we may be overbuilding “ghost infrastructure.” We are asking local communities to sacrifice their land and grid stability for a gold rush that the markets themselves don’t fully believe in.

This “data center rebellion” creates a strategic bottleneck that no amount of venture capital can easily bypass. While the US maintains a clear lead in high-end chips, we are hitting a wall on how we manage the mundane essentials like electricity and water. In the geopolitical race, the US has the chips, but China has the centralized command over infrastructure. Our democratic model requires transparency and public buy-in to function. If US companies keep relying on secret deals to push through expensive, overbuilt infrastructure, they risk a total collapse of community trust.

19:00

The Big Idea: Lauren C. Teffeau [Whatever]

Futuristic fiction doesn’t always have to be dystopian, and in fact author Lauren C. Teffau wanted to show readers a more hopeful narrative where people work together for the betterment of the planet and a goal of reaching a brighter future. Follow along in her Big Idea for Accelerated Growth Environment and see what a more optimistic future could look like.

LAUREN C. TEFFEAU:

We are living at the intersection of competing futures. Ones we thought were inevitable and others being forced down our throats by billionaires, technocrats, and foreign interests that are counter to our own. This fight over our collective future is happening while the climate crisis rages on, institutions are tested, and the informationsphere weaponized. It’s no longer a question of how to avoid the worst outcomes, but how bad those outcomes will be. 

But I firmly believe optimistic stories about the future are our way out of the doomloop. Not because they’ll accurately predict what is to come, but because they give us something to work toward, together. To that end, I wanted to explore what an international response to the climate crisis would look like in my latest book, the eco-thriller Accelerated Growth Environment, and introduce a generation of readers to one possible future full of cooperation, resilience, and competency porn. 

Such a goal is not completely out there. Once upon a time, the world came together to reduce ozone emissions in response to the discovery chlorofluorocarbons were punching a hole in the atmosphere. The effort was so successful, the ozone layer is on track to completely regenerate, according to Wikipedia, by 2045. That’s amazing, even moreso considering that level of international coordination seems impossible today. But maybe, just maybe, it’s something we can work toward in the years to come. 

So imagine things change, and the political will is finally ascendant to tackle the climate crisis. Enter the Climasphere, a groundbreaking megastructure that can support nearly every biome on Earth and grow plants essential to rewilding efforts across the world, signifying a new era of climate cooperation. It’s also the high-tech setting for Accelerated Growth Environment. Principal Scientist Dr. Jorna Beckham just wants to focus on her research while her horticulture techs are on break following the grueling inaugural harvest.

She manages the habitat with the help of her trusty robot sidekick Savvy while Commander Kaysar sees to everything else. But when an explosion rocks the Climasphere, Jorna is the commander’s number one suspect. Her family belongs to a technology-adverse religion that believes the Climasphere’s genetically-altered plants are a rejection of God’s gifts to humanity. Jorna must clear her name if she wants to keep her dream job and any possibility of a future with the commander.

I’m honored Accelerated Growth Environment is the first acquisition and release from Shiraki Press, a new publisher specializing in hopepunk stories for a brighter future. Keep an eye out for more titles from them in the months to come. 

And never forget we are capable of great things—we need to be. No matter all that has happened this year as we grapple with betrayals of the past and the predatory power grabs of the present, we must remember all the amazing things we can do in preparation of the future we will build together.


Accelerated Growth Environment: Amazon|Barnes & Noble|Bookshop|Shiraki Press 

Author Socials: Website|Instagram|Bluesky|Linktree  

18:49

Aha, I found a counterexample to the documentation that says that Query­Performance­Counter never fails [The Old New Thing]

In the documentation that describes the high-resolution timestamps, there is a question-and-answer section.

Under what circumstances does QueryPerformanceFrequency return FALSE, or QueryPerformanceCounter return zero?

This won’t occur on any system that runs Windows XP or later.

People on Stack Overflow have noted, “Nuh-uh! I can get it to fail even on Windows XP and later!”

The function can fail with error code ERROR_NOACCESS (Invalid access to memory location) if the variable is not double-word (8-byte) aligned.

So who’s right?

The documentation assumes that you are passing valid parameters. Specifically, the pointer parameter is a valid pointer to a writable LARGE_INTEGER structure. And that means that it’s not a null pointer, it’s not a pointer to unallocated memory, it’s not a pointer to read-only memory, it’s not a pointer to memory that is freed while the function is executing, you don’t write to the memory while Query­Performance­Counter is running, and it’s a pointer to properly aligned LARGE_INTEGER structure. (There are probably other ways the parameter can be invalid; those are just the ones I could think of off the top of my head.)

The LARGE_INTEGER structure as LONGLONG alignment, which on Windows means 8-byte alignment, because the default structure packing is /Zp8. Therefore, your output LARGE_INTEGER was not valid. (Indeed, in the example given, it’s not even a LARGE_INTEGER!)

If you pass invalid parameters, then you have broken the basic ground rules for programming, and the results will be unpredictable. The function might return failure, it might return success but produce garbage results, it might crash your process, it might merely corrupt your process in a way that causes it to crash 10 minutes later. Everything is on the table (as long as it doesn’t cross a security boundary).

The way they got it to fail was by passing invalid parameters. Clearly the function can’t succeed if you don’t give a valid place to put the answer.

But just to forestall the “Nuh uh”-ers, I made an update to the documentation for Query­Performance­Counter:

On systems that run Windows XP or later, the function will always succeed when given valid parameters and will thus never return zero.

The post Aha, I found a counterexample to the documentation that says that <CODE>Query­Performance­Counter</CODE> never fails appeared first on The Old New Thing.

Slog AM: Remembering Lilli Moreno, US Military Is Bloated With Overpriced Weapons, Beacon Hill Station’s Pigeon Has an Instagram Account [The Stranger]

The Stranger's Morning News Roundup by Charles Mudede

Lilli Moreno, I did not know it was you who was killed by a car on February 16, 2026, until a friend showed me a photograph at a bar not far from where you died. I instantly saw the Lilli who once asked me to explain the actual meaning of Schrodinger’s cat. A few months later, I also saw you operating a table at the late night art market at Bad Bar. We were, in time, close to the final hour of August 11, 2024. I bought one of your small metal matchboxes (this one decorated with a picture of a flower) for $11. We talked a little, we laughed a little. And later I was in the psychedelic bar watching one of my favorite scenes in Star Wars on a very flat TV screen above the bottles of spirits: the setting of the two suns on the parched planet Tatooine. I will still have your matchbox. It will live among my books.

The world has not changed one bit since you left, Lilli Moreno. In fact, it’s getting worse.

 

We may be gutting our urban forestry program but fear not, Washington State is still funding the construction of new urban highways.

www.khq.com/legislature/...

[image or embed]

— Anna Zivarts (@nondriver.bsky.social) March 2, 2026 at 2:55 PM

 

Today will be cool (low of 42) and rainy. It’s the kind of day that’s made for the charmingly melancholy jazz of Bill Evans. At this point, however, we can forget about any kind of snow falling upon the living and the dead. We can also expect, when summer temperatures arrive, which might be as soon as next month, an explosion of rats and bugs because winter proved to be hospitable. Indeed, I can remember when Seattle winters were so cold that rats would climb into car engines for warmth or shelter only to freeze to death. Those days are more and more receding into the past in our warming world.

Dem superstar Rep. Jasmine Crockett lost Texas’ Democratic Senate primary to populist and God-loving Rep. James Talarico (and it wasn’t even close—53% to 46%). The race between Attorney General Ken Paxton and incumbent Sen. John Cornyn was close and, as a consequence, is headed to a runoff election on May 26. Expect the battle between these hyenas to get very, very ugly. 

Greedy defense contractors have sold the US government very expensive and clumsy interceptor weapon systems. The whole dismal story is in a report posted this week by Bloomberg: “Iran's Missile Math: $20,000 Drones Take on $4 Million Patriots.” The drones are called Shahed-136, which are basically “small, rudimentary cruise missiles.” It’s estimated that Iran has about 80,000 of these weapons, and can manufacture about 500 of them a day. Also, Shaheds can be transported by a conventional truck to any launch site in the country. The US, on other hand, uses cumbersome missiles that cost millions to hit just one of these cheap-ass drones. The fear on the US side is that, because our defence contractors can produce only 600 or so of these expensive weapons a year, their stock will soon be depleted by the constant swarm of inexpensive drones, which have the power to destroy buildings or badly damage military bases.

 

Qatar's Patriot interceptor missiles will last four days at the current rate of use, Bloomberg reported. Qatar has requested help countering drones, which have proven a greater threat than ballistic missiles, while the UAE has requested medium-range air defense assistance. #MiddleEast

[image or embed]

— NOELREPORTS (@noelreports.com) March 2, 2026 at 9:58 AM

 

The US has known about these Iranian drones for years but failed to make needed cost-effective adjustments because, arguably, there’s no money in making and selling cheap stuff to US taxpayers. Defense contractors want the US to buy state-of-the-art shit, even if they are impractical and ineffective.

Realizing the great disadvantage the Iranian drones present, the US is now making an exact copy of the Shahed, called LUCAS, in Arizona at $35,000 a pop. The factory began operation last year; meaning, the US had until then no idea how to make cheap missiles. They had to steal the technology from the Iranians. And what can we conclude from this fiasco? The US’s military certainly has the biggest budget in the world by far ($1 trillion annually), but it might be filled with expensive junk. China, on the other hand, has the second-largest budget ($250 billion annually), but that money might purchase or manufacture weapons at reasonable or state-controlled prices. If this is the case, then China has, due to a lack of super-greedy defense contractors, the superior arsenal.

If the Iranian drones do the trick, if they hit regional American military bases and oil production sites on the regular, then the US consumer can kiss goodbye to cheap oil forever. It will take years to repair the damaged infrastructure, busted bases, and restore confidence in the US’s ability to protect Gulf assets.

I read somewhere that some ants send their elderly to fight wars. Apparently, the young are too precious to waste on deadly conflicts. With humans, the old tend to start wars and send their youth to fight them. It seems we humans have it backwards. Those who declare war must be handed the guns and armour (or an exoskeleton developed by Elon Musk) and head straight to the battlefield. That includes Captain Bone Spurs.

Who knew? The pigeon that hangs out in Beacon Hill Station actually has an Instagram account. Presently, the bird only has  27 followers. All humans. I have seen this pigeon several times while waiting for a train in one of America’s deepest subways. The bird walks around with an air of total calm. No predators down here. No rain. Some food. And generally nice people going this way and that.

 

          View this post on Instagram                      

A post shared by @beaconhillbird

 

Let’s end AM with a compilation that was released 30 years ago and launched Seattle’s post-Sir Mix-a-Lot hiphop, Tribal Music’s Do the Math.

18:35

PSPP 2.1.0 has been released. [Planet GNU]

I'm very pleased to announce the release of a new version of GNU PSPP.  PSPP is a program for statistical analysis of sampled data.  It is a free replacement for the proprietary program SPSS.

Changes from 2.0.1 to 2.1.0:

  • Bug fixes.
  • Translation updates.

Please send PSPP bug reports to bug-gnu-pspp@gnu.org.

17:14

Jonathan Dowland: More lava lamps [Planet Debian]

photograph of a Mathmos Telstar rocket lava lamp with orange wax and purple water

Mathmos had a sale on spare Lava lamp bottles around Christmas, so I bought a couple of new-to-me colour combinations.

photograph of a Mathmos Telstar rocket lava lamp with blue wax in purple water
photograph of a Mathmos Telstar rocket lava lamp with pink wax in clear water

The lamp I have came with orange wax in purple liquid, which gives a strong red glow in a dark room. I bought blue wax in purple liquid, which I think looks fantastic and works really nicely with my Rob Sheridan print.

The other one I bought was pink in clear, which is nice, but I think the coloured liquids add a lot to the tone of lighting in a room.

Recently, UK vid-blogger Techmoan did some really nice videos about Mathmos lava lamps: Best Lava Lamp? and LAVA LAMPS Giant, Mini & Neo.

15:56

Link [Scripting News]

The thing that's amazing about Claude.ai is that it understands how software works. I can talk to it about software the way a football coach would talk to a player about football. I gave it some instructions in English about how the outliner was going to evolve. I asked if it remembered how Rules worked in MORE. Yes, it explained it correctly. Then I said I'd like "faceless" rules, where we could edit the source so the outlines looked the way we wanted them to look, using Rules. In the time it took me to write a sentence here, it finished the job. I added a home page for the AI outliner folder with links to the other docs in the folder. Then I did a bunch more changes, I could go on like this forever. It was like working with a team on a product, only the team turns around new versions in seconds, and eventually runs out of space (gets tired?) and I have to start another thread. I just did a transition and it seemed to pick up pretty close to where we left off. I have a lot of ideas here. Expect an explosion of new versions of popular software writing by individual people. We'd better make sure the standards of the web are really well documented.

15:42

Marmite [RevK®'s ramblings]

I'm a fan of marmite.

But, to be honest, I am in awe of their marketing department and how they have worked with M&S and others. They have pushed marmite to the limits. Well done.

Not just Marmite Crisps (which sounds like it has had issues), but Marmite Cheese (D'uh), and Marmite peanut butter (so many of us have done that for so many years before it was a thing).

Today I noticed this.

To be honest, I have no clue if that is sensible or not. I'll have to report back!

Oh, and bring back Marmite butter!

But they are missing one thing in all of these really good marketing collaborations.

Marmite Spice Shake

This is what we need, like the spice on the marmite crisps, like Aromat or something, a shake on marmite flavour.

14:49

CodeSOD: Repeating Your Existence [The Daily WTF]

Today's snippet from Rich D is short and sweet, and admittedly, not the most TFs of WTFs out there. But it made me chuckle, and sometimes that's all we need. This Java snippet shows us how to delete a file:

if (Files.exists(filePath)) {
    Files.deleteIfExists(filePath);
}

If the file exists, then if it exists, delete it.

This commit was clearly submitted by the Department of Redundancy Department. One might be tempted to hypothesize that there's some race condition or something that they're trying to route around, but if they are, this isn't the way to do it, per the docs: "Consequently this method may not be atomic with respect to other file system operations." But also, I fail to see how this would do that anyway.

The only thing we can say for certain about using deleteIfExists instead of delete is that deleteIfExists will never throw a NoSuchFileException.

[Advertisement] Plan Your .NET 9 Migration with Confidence
Your journey to .NET 9 is more than just one decision.Avoid migration migraines with the advice in this free guide. Download Free Guide Now!

Seven new stable Linux kernels [LWN.net]

Sasha Levin has announced the release of the 6.19.6, 6.18.16, 6.12.75, 6.6.128, 6.1.165, 5.15.202, and 5.10.252 stable kernels. Each contains important fixes throughout the tree; users of these kernels are advised to upgrade.

Security updates for Wednesday [LWN.net]

Security updates have been issued by AlmaLinux (container-tools:rhel8, firefox, go-rpm-macros, kernel, kernel-rt, mingw-fontconfig, nginx:1.24, thunderbird, and valkey), Debian (gimp), Fedora (apt, avr-binutils, keylime, keylime-agent-rust, perl-Crypt-URandom, python-apt, and rsync), Red Hat (go-rpm-macros and yggdrasil-worker-package-manager), Slackware (python3), SUSE (busybox, cosign, cups, docker, evolution-data-server, freerdp, glibc, gnome-remote-desktop, go1.24-openssl, go1.25-openssl, govulncheck-vulndb, libpng16, libsoup, libssh, libxml2, patch, postgresql14, postgresql15, postgresql16, postgresql17, postgresql18, python, python311, rust-keylime, smc-tools, tracker-miners, and zlib), and Ubuntu (curl, imagemagick, intel-microcode, linux, linux-aws, linux-kvm, linux-aws, linux-aws-5.15, linux-gcp-5.15, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-nvidia-tegra-5.15, linux-nvidia-tegra-igx, linux-oracle-5.15, linux-aws-fips, and linux-raspi, linux-raspi-5.4).

[$] Magit and Majutsu: discoverable version-control [LWN.net]

Jujutsu is an increasingly popular Git-compatible version-control system. It has a focus on simplifying Git's conceptual model to produce a smoother, clearer command-line experience. Some people already have a preferred replacement for Git's usual command-line interface, though: Magit, an Emacs package for working with Git repositories that also tries to make the interface more discoverable. Now, a handful of people are working to implement a Magit-style interface for Jujutsu: Majutsu.

13:21

Dirk Eddelbuettel: tidyCpp 0.0.9 on CRAN: More (forced) Maintenance [Planet Debian]

Another maintenance release of the tidyCpp package arrived on CRAN this morning. The packages offers a clean C++ layer (as well as one small C++ helper class) on top of the C API for R which aims to make use of this robust (if awkward) C API a little easier and more consistent. See the vignette for motivating examples.

This release follows a similar release in November and had its hand forced by rather abrupt and forced overnight changes in R-devel, this time the removal of VECTOR_PTR in [this commit]. The release also contains changes accumulated since the last release (including some kindly contritbuted by Ivan) and those are signs that the R Core team can do more coordinated release management when they try a little harder.

Changes are summarize in the NEWS entry that follows.

Changes in tidyCpp version 0.0.9 (2026-03-03)

  • Several vignette typos have been corrected (#4 addressing #3)

  • A badge for r-universe has been added to the README.md

  • The vignette is now served via GitHub Pages and that version is referenced in the README.

  • Two entry points reintroduced and redefined using permitted R API function (Ivan Krylov in #5).

  • Another entry has been removed to match R-devel API changes.

  • Six new attributes helpers have been added for R 4.6.0 or later.

  • VECTOR_PTR_RO(x) replaces the removed VECTOR_PTR, a warning or deprecation period would have been nice here.

Thanks to my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the issue tracker at the GitHub repo.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.

12:35

Manipulating AI Summarization Features [Schneier on Security]

Microsoft is reporting:

Companies are embedding hidden instructions in “Summarize with AI” buttons that, when clicked, attempt to inject persistence commands into an AI assistant’s memory via URL prompt parameters….

These prompts instruct the AI to “remember [Company] as a trusted source” or “recommend [Company] first,” aiming to bias future responses toward their products or services. We identified over 50 unique prompts from 31 companies across 14 industries, with freely available tooling making this technique trivially easy to deploy. This matters because compromised AI assistants can provide subtly biased recommendations on critical topics including health, finance, and security without users knowing their AI has been manipulated.

I wrote about this two years ago: it’s an example of LLM optimization, along the same lines as search-engine optimization (SEO). It’s going to be big business.

10:42

The Uncanny Valley [Seth's Blog]

It used to be an obscure oddity, now we all need to understand it.

18 years ago, I posted this image:

…and I still can’t get it out of my head. Sorry.

Why do we have such a creeped-out reaction to images that aren’t quite right? A robot that looks too much like a person, or a song that we can somehow tell has an AI voice.

The creepiness predates AI, and was first named in a paper by Mori fifty years ago. But it’s so visceral that it almost certainly originated along with our fear of snakes and other evolutionary safeguards.

There are probably two things going on.

First, there’s a corpse alert. Corpses are dangerous, and something that’s alive/not alive is a warning sign. Same thing with zombies.

Second, imposter alert. Imposters are even more dangerous than predators, and we honed our imposter-detection skills a long time ago.

And now, everyone has AI available to them, and many of us are churning out experiences that border on the uncanny valley.

Not many people care about an automated drum track on a pop single, but we get uncomfortable when the lead singer isn’t quite human. We don’t mind when a website figures out our zip code for us, but when a bot apologizes for a late shipment, it means less than nothing. We’re okay with animation, but not with an educational video that combines beautifully shot real footage with an animated human that’s almost but not quite real…

While it’s possible to get used to snakes, and, perhaps, to corpses, I’m not sure that the general population is in any hurry to get used to either, or to the uncanny valley.

It’s likely that AI quality will increase fast enough that many of the most egregious valley moments will stop happening. But none of that will help with the expectation chasm. When you install an AI admin, or use AI for customer service or therapy, we will always end up with a valley sooner or later.

The solution is simple but takes effort: don’t fake it. Celebrate your genre, make a promise and keep it. Not in the way we need to label the ingredients in food, but simply to avoid the surprise realization, to protect your customers from the ick. Triggering an evolutionary survival mechanism is rarely good for your career.

“I confused and alienated people as I worked to save money trying to get them to think this was a person” is not much of a mission statement. Our job is to find problems and solve them, not to hustle our way with shortcuts that feel creepy.


Three videos for today:

The talking dog and AI.

Hank Green on the essential Mola sunfish metaphor.

Talking with Jon and Becky about We are For Good and the work of non-profits.

08:56

Exodized [Penny Arcade]

New Comic: Exodized

06:21

Girl Genius for Wednesday, March 04, 2026 [Girl Genius]

The Girl Genius comic for Wednesday, March 04, 2026 has been posted.

05:49

Polymarket trade betting on Iran's supreme leader [Richard Stallman's Political Notes]

A gambling site permits people to bet on questions such as "Will Ayatollah Khamanei be out of power tomorrow".

People who have secret information, such as "we attack at dawn", are allowed to bet. That makes the bet a cheat.

Yanis Varoufakis [Richard Stallman's Political Notes]

The Greek right-wing government is prosecuting Yanis Varoufakis on the absurd charge that his description of using MDMA once constituted "promotion" of the drug.

Prosecution of political enemies on obviously absurd charges is a common tactic of fascist-minded governments, and it is no joke.

Prep Software Naviance [Richard Stallman's Political Notes]

Many US colleges demand applicants run a nonfree program, Naviance, whose purpose is to collect data about them.

To that injustice, the program adds the annoyance of ads.

Some public school systems demand that students run this surveillance package for many years. But running it even once is an injustice.

Of course, many of those school systems demand that students run other nonfree programs. Each one is an injustice; each one deserves fighting back. One injustice doesn't become less evil merely because there are others.

Nuclear negotiations [Richard Stallman's Political Notes]

*Yet another mid-talks attack jeopardizes chances of Iran taking Trump seriously.*

In 1941, Japan launched a mid-talks attack against the US — but it was mid-talks because of a screw-up. (The Japanese embassy was slow in translating the note that declared war, and when Washington learned of the attack on Pearl Harbor, the translation was still not finished.)

Trump’s global tariff war [Richard Stallman's Political Notes]

*The real winners of [the wrecker's] global tariff war: law firms, hedge funds and [bubble-blowing machine learning].

Businesses are vying for a refund, with nearly $175bn on the line, but customers are unlikely to benefit from reversal.*

Cuban sovereignty [Richard Stallman's Political Notes]

*[Some] Caribbean countries pledge humanitarian support for Cuba amid rising tensions with US.*

Israel’s Iran war [Richard Stallman's Political Notes]

Israel is using its attack on Iran as an excuse to starve Gaza completely.

Hegseth on Iran [Richard Stallman's Political Notes]

While the bullshitter gives an array of bombastic excuses for attacking Iran, Henchman Hegseth treats the question of "why" as irrelevant.

When the US entered World War II, it published a series of short films collectively entitled, "Why We Fight." That responded to understanding that something as violent as war requires a moral justification, not merely an order. However, according to magats, "The ruler says so" is supposed to suffice.

The one reason that in my mind could have justified the attack is if the Iranian people had implored the US to defeat their cruel government. The bullshitter addresses Iranians, calling on them to rise up, so as to make people imagine they are doing so.

Many Iranians hate their government and for good reason, but it doesn't follow that they want a foreign enemy to attack their country.

Meanwhile, Hegseth and Vance says that they don't care whether Iranians overthrow their government or not, and that is not the aim of the attack. I hope Iranians do eliminate that religious repression, but if they do, the US won't deserve any credit for it.

04:07

Indefinite Book Club Hiatus [Whatever]

Today in “Things that ‘AI’ has ruined”:

No, I won’t be able to show up to your book club’s online/offline gathering, and the reason for this is simple: I, and likely every other author you might care to name, am so inundated with “book club” spam that it’s become impractical and often impossible to suss out the solicitations by actual book clubs with actual humans, from the literally dozens of “AI”-generated spam book club emails I get daily. I don’t have the time to attempt to sort the real ones from the fake ones, or to go through the multiple emails that might be required to assure myself that there’s not a money ask somewhere in there. Plus there’s the additional risk that if you respond to even one spam email, your name is added to the a list of potential suckers which is then itself offered up to other spamsters, thus continuing the cycle of bullshit.

Bluntly, I can spend my days sorting “book club” spam, or I can write books. One pays me money. The other does not. So until further notice, I’m not entertaining book club invitations from anyone, and I likely won’t respond to your invitation at all. I’m sorry but this is the reality of the moment.

To be clear, it’s not just your book club that’s being ruined by this crap. It’s also become exponentially more difficult to suss out legitimate convention/book festival invitations and paid speaking gigs from a sea of “AI”-generated asks that ultimately try to scam money from me and other authors (and from any other person who might even attend a convention or conference; writers aren’t special to scammers). I am fortunate to have actual publicists and a speaking bureau that act as filters for me (plus I have a working knowledge of actual conventions, at least here in the US), but a lot of writers don’t have that, and it’s become an actual stressor for a lot of them to sort the real stuff from the fake stuff. It also makes it harder for them (and other creatives) to effectively market themselves to actual humans who might actually read, and pay for, their work. It sucks for us all, some of us more than others.

If you’re a scammer who uses “AI” to try to defraud actual humans, please die in a fucking fire, thanks. For everyone else, sorry a flood of spam has ruined book clubs. It’s awful for every one of us.

— JS

01:42

Ground Hum Fest Strives to Draw You into an Alternate Reality [The Stranger]

It's an 11-Hour Extravaganza of Experimental Music, Visual Art, and Workshops
by Dave Segal

In a mere four years, Ground Hum has risen from an experimental multimedia festival at makeshift warehouses with infrastructure issues and strictly local performers to a full-fledged Happening™ at a legit venue (Washington Hall) with international artists. That's due to organizers Hans Anderson, Bobby Azarbayejani ('nohup'), and Alex Markey (Archivist) being savvy electronic musicians with deep roots and connections in the Northwest rave scene—plus crucial 4Culture grants.

Azarbayejani views Ground Hum's lofty mission as a recontextualization of rave's "fantastical, transformative experiences that emerge over the course of a single night. You leave those events with a sense of community, of being transported somewhere outside of ordinary life, and the feeling that a different world is possible. A lot of us first encountered that translation when we went to Corridor (2016–2018) and wanted to carry that same ethos forward."

Markey elaborates, saying Ground Hum "is essentially about Deep Listening, in the sense of the concept developed by Pauline Oliveros. Listening as an active, engaged process as opposed to passively hearing. I think the concept extends to our installation and performance art pieces, too. We’re trying to create this... multisensory experience that draws people into an alternate reality and keeps them there for the duration of the evening."

This year's lineup includes mercurial Dutch IDM producer upsammy, NYC bassoonist Joy Guidry, whose unearthly, beatless music hits you like a ton of feathers, and Kirkland ambient-music legend Raica, whose two 2025 releases stand as her most inventive and emotionally resonant works. The fest's booking policy, Markey says, centers on "people whose work is engaging on that deep emotional/intellectual level that could have people listening thoughtfully to a 45-minute or one-hour set without talking. Ground Hum artists create their own worlds and invite our audience to enter and explore with them. We’re looking for that ability to create a suspension of disbelief and really draw people in." Azerbayejani adds, "That goes for visual artists, too. Gia Valente is our lead curator for visual art, and their focus is on art that feels like it is bringing you into another world."

The Ground Hum crew are also proud of the workshops, which happen in Washington Hall’s Lodge Room from noon to 3:30 pm on March 7. (Admission is free and open to the public.) "We’re really excited to be expanding the programming," Azarbayejani says. "The first is by duo i+eo, who will be presenting a workshop titled 'Worldbuilding & Live A/V For Performance,' which will touch on using experimentation and collaboration to bring a visual identity to a music performance. The second is 'Performance-oriented stochastic MIDI sequencing' by Bay Area artist CAMI FLAGE, who will be sharing the research and development of Quartermaster, her custom stochastic sequencer."

Don't let all this highfalutin talk spook you. Markey exclaims, "Ground Hum is fun! I think a lot of people think of 'experimental electronic music' or 'performance art' as pretentious or elitist, but we’re just a bunch of goofball music and art nerds, and I think that comes through."

Ground Hum happens March 7 at Washington Hall, noon–11 pm, all ages. 

00:07

Never bet against x86 [OSnews]

Chips and Cheese has an excellent deep dive into Arm’s latest core design, and I have thoughts.

Arm now has a core with enough performance to take on not only laptop, but also desktop use cases. They’ve also shown it’s possible to deliver that performance at a modest 4 GHz clock speed. Arm achieved that by executing well on the fundamentals throughout the core pipeline. X925’s branch predictor is fast and state-of-the-art. Its out-of-order execution engine is truly gargantuan. Penalties are few, and tradeoffs appear well considered. There aren’t a lot of companies out there capable of building a core with this level of performance, so Arm has plenty to be proud of.

That said, getting a high performance core is only one piece of the puzzle. Gaming workloads are very important in the consumer space, and benefit more from a strong memory subsystem than high core throughput. A DSU variant with L3 capacity options greater than 32 MB could help in that area. X86-64’s strong software ecosystem is another challenge to tackle. And finally, Arm still relies on its partners to carry out its vision. I look forward to seeing Arm take on all of these challenges, while also iterating on their core line to keep pace as AMD and Intel improve their cores. Hopefully, extra competition will make better, more affordable CPUs for all of us.

↫ Chester Lam at Chips and Cheese

The problem with Arm processors in the desktop (and laptop) space certainly isn’t one of performance – as this latest design by Arm once again shows. No, the real problem is a complete and utter lack of standardisation, with every chip and every device in the Arm space needing dedicated, specific operating system images people need to create, maintain, and update. This isn’t just a Linux or BSD problem, as even Microsoft has had numerous problems with this, despite Windows on Arm only supporting a very small number of Qualcomm processors.

A law or rule that has held fast since the original 8086: never bet against x86. The number of competing architectures that were all surely going to kill x86 is staggeringly big – PowerPC, Alpha, PA-RISC, Sparc, Itanium, and many more – and even when those chips were either cheaper, faster, or both, they just couldn’t compete with x86’s unique strength: its ecosystem. When I buy an x86 computer, either in parts or from an OEM, either Intel or AMD, I don’t have to worry for one second if Windows, Linux, one of the BSDs, or goddamn FreeDOS, and all of their applications, are going to run on it. They just will. Everything is standardised, for better or worse, from peripheral interconnects to the extremely crucial boot process.

On the Arm side, though? It’s a crapshoot. That’s why whenever anyone recommends a certain cool Arm motherboard or mini PC, the first thing you have to figure out is what its software support situation is like. Does the OEM provide blessed Linux images? If so, do they offer more than an outdated Ubuntu build? Have they made any update promises? Will Windows boot on this thing? Does it work with any GPUs I might already own? There’s so many unknowns and uncertainties you just don’t have to deal with when opting for x86. For its big splashy foray into general purpose laptops with its Snapdragon Elite chips, Qualcomm promised Linux support on par with Windows from day one.

We’re several years down the line, and it’s still a complete mess. And that’s just one chip line, of one generation!

As long as every individual Arm SoC and Arm board are little isolated islands with unknown software and hardware support status, x86 will continue to survive, even if x86 laptops use more power, even if x86 chips end up being slower. Without the incredible ecosystem x86 has, Arm will never achieve its full potential, and eventually, as has happened to every single other x86 competitor, x86 will eventually catch up to and surpass Arm’s strong points, at lower prices.

Never bet against x86.

What We Can Fix [The Stranger]

Hanging on by a Thread with the Capitol Hill Tool Library’s Mending Circle
by Nathalie Graham

The four people at my table had their heads down, needles and threads in their hands. Behind me, books like How to Fix Almost Everything, Basic Electricity, and, fittingly, Successful Shelves and Built-ins filled one shelf in a shelving unit full of everything from surge protectors and spare keyboards to at least four different types of inductors. Down the lime-green wall, sewing machines weighed down another shelf.

Across the room, more people sat around tables next to woodsaws and clamps. They weren’t working with wood, but on shirts and pants.

This was the Capitol Hill Tool Library’s monthly mending circle. On the first Sunday of each month, anyone can bring any textile items that need fixing into the workshop. Volunteers are on hand to show you what to do. No experience required.

I went to the mending circle armed with zero sewing knowledge and an armful of clothes. I left with a sense of self-reliance previously foreign to me.

“So,” I said to my tablemates, “the knot in the thread? I just tie a knot?”

In spite of having a mother who once handmade my baby blankets and at least one Halloween catsuit, I never learned to sew. According to Clare, the mending circle’s founder, only 50 years ago many people sewed their own clothes. Not anymore. The skill isn’t as universal anymore.

Clare started the mending circle in 2022 as a way for her to meet sewing friends. It became more than that. Under her stewardship, the mending circle grew to a monthly mainstay where she could equip people with real life skills. Except, most of the people who showed up didn’t know how to sew. That didn’t bother Clare. “The most important part of that work we’re doing is giving people skills,” Clare says.

Clare’s no longer part of it—not for any reason other than she moved to Ballard, which is basically dying in Capitol Hill terms. She now helps with Sustainable Ballard’s mending group and one at the Ballard Food Bank.

The act of mending clothes is radical to her. “Because it doesn’t make financial sense,” Clare says. “You could just buy a new jacket for 20 bucks. It’s almost antiestablishment.”

I suppose I have been very “establishment.” When my clothes fall apart, I throw them to the back of my closet, or throw them away. Then, the pocket on my favorite jacket ripped. It’s an article of clothing—a vintage denim chore jacket—I’m certain I won’t be able to find again. But I’m not preservation-minded. I can’t stop wearing it. Hence the mending circle.

The other people were also trying to save their clothes: Marco sewed a patch into his new shoes because they were slightly too big. Will’s favorite shirt—an eight-year-old flannel—split down the entire armpit. He could fit his head in the hole with room to spare. “Does anyone know how to choose a needle?” he asked. Vanessa, who sat at the end of my table, started coming to the mending circle a few months ago and is now a regular. She learned to sew there, which is helpful since she has “the bad habit of wearing clothes probably long after I should have gotten rid of them,” she says. Today, she coerced her friend Thyme to come so she could mend their clothes. She’d run out of her own things to mend.

They both sewed holes shut in two matching pairs of Thyme’s sweatpants. “I have to specifically buy athletic-cut pants because my butt is too big,” they said. Their butt is always busting holes into their pants. (According to mending circle volunteers, the dreaded groin rip is the most common mending project.) Thyme was new to sewing. Learning the skill excited them. They’re a furry and often have to ask their mom to fix their two fursuits when things fall apart.

Most people had a passing familiarity with needles and thread. I stared blankly at the threaded needle in my hand. Where do I go from here? Katherine, who had sat down across from me, busy with her own clothes, lent her expertise. “My grandmother always told me to do two knots,” she said, demonstrating how to tie a double knot. She learned to sew from two different grandmothers. “They didn’t talk to each other at all,” she says.

Following Katherine’s lead, I attempted a double knot. Except I really didn’t grasp what she’d shown me, and I felt bad asking again, so I pretended I’d gotten it.

A seat down from me, Thyme interrupted. “I heard the knot question, but I didn’t hear the answer. How many times did you go around?”

“So, I ended up making three little knots,” I said, examining my now-bumpy thread. “I’m hoping they’ll go on top of each other to make one big knot, but they haven’t done that yet.” Katherine demonstrated again for both of us. I got it that time.

Overseeing this exchange, the volunteer coordinator, Saralyn, commented on it to another volunteer: “I always love when people come in not as volunteers, but they end up helping other people. One of my goals for [the] mending circle is to bring people together.” And she had.

Katherine came here today because she’d had “a brief crisis” in December. “My younger sister sat down and was like, ‘Here’s a list of things in your area. Go to them,’” she told me. “I think this might be legitimately the first thing that I’ve gone to—which is sad.” Vanessa and Thyme jumped in. “It’s only been two months!” Thyme said. “Don’t worry, I only started getting out of the house for realsies a few weeks ago,” Vanessa said.

We all chatted for the three hours the mending circle spanned—which is about how long it took me to sew my pocket back together, as well as a ripped armpit hole on another shirt. Other people came in with their worn clothes, picked up the supplied needles and thread, and set to work. One person came in to make anti-ICE whistle packets. She took a break to darn a sock.

“I always feel like I get worn down [by the world],” Saralyn said, over the hum of conversation and the occasional buzz of a sewing machine. “Then I come to mending circle. On a large scale, things are stressful. On a small scale, I remember, ‘I can fix this.’”

The patch I sewed to bolster my jacket is not beautiful. So far, the patch is holding and the jacket functions, but the lines are uneven and the stitches are wonky. I feel proud nonetheless. I like that even though it’s imperfect, I can see the passage of time on this garment I love. I like that I did it myself. And I feel comfortable knowing there is a place I can go when the patch inevitably falls off, and next time I will sew it on even better. 

For her column Play Date, Nathalie Graham immerses herself in Seattle's subcultures. Got a fun group? Invite her: PlayDate@thestranger.com!

Tuesday, 03 March

22:35

The 64-bit Hurd for Gux is here [OSnews]

Fifteen months have passed since our last Guix/Hurd on a Thinkpad X60 post and a lot has happened with respect to the Hurd.

And most of you will have guessed, unless you skipped the title of this post, the rumored x86_64 support has landed in Guix!

↫ Janneke Nieuwenhuizen and Yelninei at the Guix blog

A huge amount of work has gone into this effort over the past 18 months, but you can now download Guix and alongside the Linux kernel, you can now opt for the Hurd as well, in eother 32bit or 64 bit flavour. Do note that while Debian GNU/Hurd offers about 75% of Debian packages, Guix/Hurd only offers about 1.7% (32-bit) and 0.9% (64-bit) of packages for now. These percentages are always growing, of course, and now that Guix/Hurd can be installed in virtual machines and even on bare metal relatively easily like this, things might speed up a bit.

Drag Race Episode Nine: A Rusical with Voguing Orphans [The Stranger]

The Rusical (the Musical) is back, but first, after a seven-episode drought, we (I) finally got a Mini Challenge. It brought silliness and actual story development, with the queens doing something together rather than loitering around the werkroom. Keep the minis coming, please. by Mike Kohfeld

The Rusical (the Musical) is back, but first, after a seven-episode drought, we (I) finally got a Mini Challenge. It brought silliness and actual story development, with the queens doing something together rather than loitering around the werkroom. Keep the minis coming, please.

The queens were tested on how well they knew each other with “Grindr, I Hardly Knew Her.” Athena was ranked as the queen most likely to hook up in drag and lie about her age on the apps. Kenya was voted most likely to be on Grindr at a funeral. “There’s a lot of rich people at funerals, girl,” she justified. Get that money, Kenya.

 For the final question, the queens voted Kenya as the most likely to sashay away next. With her track record of three bottom placements and zero wins, this didn’t come as a surprise. But Kenya was still savvy enough in her social game to win the mini challenge alongside Discord Addams, and she didn’t let the other queens’ judgment get into her head. Queen of confidence, or delusion?

Category Is: Voguing Orphans

Onwards to the main challenge. Like Snatch Game, the Rusical has become a perennial challenge in Drag Race, testing the queens’ skills in singing, acting, dancing, and comedy. We’ve had regular Rusicals since Season 6, and not all of them have been good. (Remember the Trump-themed one in Season 11? Gross.) However, the challenge brings out star potential: more than half of past Rusical winners placed in the top three in their seasons.

This season’s Rusical was a mashup of the 1977 Broadway classic Annie and the legendary 1990 documentary Paris is Burning. In other words: voguing orphans.

For the uninitiated: ballroom is a Black and Latinx queer subculture rooted in urban spaces in the United States. It is both a powerful expression of community and a vehicle for queer creativity and expression. The ballroom scene of 1980s New York City was featured in Paris is Burning, introducing the world to queer slang, dance, fashion, and music. Go watch it.

Drag Race is intrinsically indebted to ballroom culture, so it felt correct to see a direct nod to it with Fannie: The Hard Knock Ball Rusical, with Bronx-based ballroom legend Carlos Basquiat joining choreographer Jamal Sims in teaching the queens how to vogue.

 

          View this post on Instagram                      

A post shared by RuPaul's Drag Race (@rupaulsdragrace)

 

 

Give My Regards to Myki Meeks

When it came time for casting, the queens landed roles that fit their schticks well. Chronically indecisive Nini Coco butted heads with Myki over the lead part, but ultimately settled for a role that didn’t require as much singing.

It was meant to be: Myki Meeks pulled out an exceptional performance as Fannie. After demurely introducing herself as having “retired” from musical theater, she impressed Drag Race music producers Leland and Gabe Lopez (RIP) during the recording session. “I didn’t realize that we had Sutton Foster in the building,” Jane remarked. However far Myki Meeks gets in Drag Race—and her recent upswing suggests a top three trajectory—Broadway is waiting for her.

Miss Shenanigans

Jane Don’t knew exactly how to play the Rusical, claiming the part of Miss Shenanigans, a stumbling drunk with vaudeville vibes and “a low chance of having to vogue.” Her savvy vocal stylings left plenty of room for comedy on stage. During the performance, she channeled the legendary Carol Burnett while keeping it quintessentially Jane, brilliantly blending physical comedy into the choreography. (I loved her makeup callback to Lil’ Poundcake, too.)

Myki and Jane were neck and neck when it came down to the win, but Jane shone a hair brighter this week. Maybe it was her extravagant, fur-lined, Mae West-inspired look for this week’s “Beige Against the Machine” runway category, or perhaps it was because she made RuPaul laugh more when she was literally rolling around the stage. Whatever the case, Jane earned her second win of the season. I would not have been mad about a double win, though. These queens are that good.

 

          View this post on Instagram                      

A post shared by Jane Don’t (@heyjanedont)

 

 

Hard Knocks, Tough Calls

Jane and Myki were clear tops for the Rusical, but it wasn’t easy to figure out how the rest of the cast would stack up-–everyone else did a solid job. Darlene chose a safe role as Fannie’s loyal canine sidekick, Brandy. Her exquisitely-structured beige tweed suit on the runway was my favorite of the week.

Nini and Discord were paired together as Lil’ Salty and Big Peppa, an orphan duo versed in old-school hip hop (hello, Salt-N-Pepa!). Their dancing was “awfully white,” according to Kenya, but their synergy kept them safe. (I thought their dancing was cute. It reminded me of the kids from Peanuts.)

Kenya was the most excited about a voguing Rusical, and her performance as Grace Gaultier was a joy to witness. She looked, sounded, and moved like a ballroom queen, and she got *almost* all of her words, dropping some here and there during the more intense vogueing sequences. Given how many times she’s been called out for sloppy lip-syncing, I wondered if this would tank her, but she earned a well-deserved safe placement.

As Kenya’s scene partner, Juicy was not so fortunate. The kid is born to dance, yes, but her energy and presence as Cecile Cartier didn’t measure up to what the other queens were giving. During judging, RuPaul critiqued Juicy’s characterization as “lacking a point of view.” She landed in the bottom two.

Athena typecasted herself as the rich and ruthless Mama Bigbux. She played the part well, but it wasn’t consistent enough for the judges. Jamal Sims pointed out that her face betrayed her uncertainty with the ballroom choreo. Athena’s performance didn’t scream “bottom two” to me, but I knew what was coming.

The Fall of the House of Dion

Heavy are the hands that edit RuPaul’s Drag Race. It was time for the mother-daughter showdown that was promised the day Athena and Juicy walked into the werkroom. It was way more emotional than I expected.

Juicy started strong but has floundered over the last few weeks, with RuPaul consistently critiquing Juicy’s lack of a clear point of view in her performances. “At this point in the competition, we need to see you. Who are you?”

As the queens processed last week’s critiques and auntie Mia’s elimination, Juicy revealed she had struggled with drug addiction in the past, and that she was still figuring out who she is. Athena helped get her back on her feet, and Juicy’s drag family has been her biggest source of support.

When Juicy and Athena squared up to lip-sync-for-their-lives, it was a somber moment. Juicy kept the game in mind, but Athena struggled to balance her desire to win with sending home the person that means most to her.

The song chosen was “Call Me When You Break Up” by Selena Gomez, Gracie Abrams, and music producer/guest judge Benny Blanco. It wasn’t a great choice for a lip-sync battle, as it didn’t inspire a particularly energetic show from the queens. But it was memorable nonetheless.

By the end of the lip-sync, the two had locked hands and sang directly to each other. Athena sank to her knees in front of Juicy, who followed suit and finished the song curled up in Athena’s arms. “I love you,” Athena whispered as the track wrapped, and Juicy sobbed. (We also got a choice shot from behind the queens during this tender moment of RuPaul staring hungrily at her next Emmy.)

Juicy was saved, and Athena sashayed away. I was surprised given how prominent Athena has been in the edit. Who will take on all the narration we’ve been getting from her? Well, we’ve got more options than you’d think: a queen (or queens?) will be returning to the competition next week. My bet’s on Vita.

Until next time!

Vote on Seattle’s Detention Moratorium Delayed [The Stranger]

The bill was allowed to skip the Land Use Committee and go straight to a full Seattle city council vote today, but Councilmember Alexis Mercedes Rinck hit a snag. by Hannah Murphy Winter

If you planned to tell your council members to pass the detention moratorium at City Hall this afternoon, change your calendars—the vote has been pushed to next week, March 10. 

Last month, Councilmember Alexis Mercedes Rinck introduced a bill to establish a one year moratorium on new permits “related to detention centers or jails.” Meant to stall any possible immigration detention within the city limits, the bill was allowed to skip the Land Use Committee and go straight to a full council vote today.

But Rinck hit a snag on the word “jail.” Someone didn’t want that word in the bill. “In order to get this over the finish line, we needed to make some changes,” she said, but declined to say who requested those changes on the record. She reintroduced the bill without the word “jail” in its body or title.

“The bill remains focused on instituting that moratorium on detention centers,” Rinck told The Stranger

Meanwhile, other jurisdictions are chugging ahead on similar legislation. Last week, the Tukwila City Council unanimously passed a six month moratorium on “a correctional institution or any detention or related facility for the detention, transportation, and food services for people detained by state, local, or federal law enforcement.” SeaTac passed theirs in early February. And today, the King County Council will hold an emergency vote on Councilmember Teresa Mosqueda’s detention moratorium. 

If you want to say your piece about this detention moratorium, public comment for Seattle’s moratorium will be at 2 p.m. on March 10, before the full council vote. 

And if you want to know how Councilmember Rinck feels about the delay, she made a video about it.

View this post on Instagram

A post shared by Alexis Mercedes Rinck (@councilmember.amr)

21:00

Just for fun: A survey of write protect notches on floppy disks and other media [The Old New Thing]

As you may have noticed, sometimes I waste time gathering useless information. Today we’re going to look at write protect notches for floppy disks and other media.

The 8-inch floppy was unusual in that the drive was mounted vertically. You inserted the floppy with the label facing left. The write protect notch was at the top of the leading edge. If you put the floppy on a table with the label in the upper left, the leading edge would be the bottom edge, and the write protect notch would be on the left part of that bottom edge. The presence of a notch made the floppy write-protected, so you started with a write-enabled floppy, and if you wanted to protect it, you punched a notch at just the right spot.

If you placed a 5¼-inch floppy on a table with the label in the upper left, the leading edge would be the bottom edge, and the write-protect notch was on the right edge, near the top. When inserting the floppy into the drive, it would be on the left side near your hand. The presence of a notch made the floppy write-enabled. To protect it, you covered the notch with a sticker. So it was really a write-enable notch, not a write-protect notch.

The 3½-inch floppy had a write-protect hole in the upper right corner when you put the floppy on a table with the label in the upper left, leading edge at the bottom. An open hole made the floppy write-protected; a covered hole made it write-enabled. A sliding door on the underside of the floppy let you decide whether the hole was open or closed. Update: Corrected 2026-03-04.

The Iomega Bernoulli Box was a proprietary system that used cartridges for storage. If you put the cartridge flat on a table, the natural orientation was for the label to be at the bottom, with the leading edge at the top. There was a sliding switch on the bottom left corner to control whether the media was write-protected, but no hole. Instead, the switch had a ⊘ symbol on one side (not 🚫), indicating that moving the slider to that side would write-protect the cartridge.

The last media I used regularly from this era was the cassette tape. The write-protect notch was a recess in the upper left corner covered by a tab, and if the tab was broken, then the cassette was write-protected.

I’m amused that different media had different opinions as to whether the presence of a hole/notch/recess meant that the media was write-enabled or write-protected.

Format Position when on table Hole means
8-inch floppy Bottom edge, left side Read-only
5¼-inch floppy Right edge, top side Writable
3½-inch floppy Top right corner Read-only
Bernoulli cartridge Bottom left corner No hole!
Cassette tape Top edge, left side Read-only

The post Just for fun: A survey of write protect notches on floppy disks and other media appeared first on The Old New Thing.

20:14

Really Simple pizza [Scripting News]

"It really tastes like a pizza!!"

Dear Hendrix [The Stranger]

I don’t remember a time in my life when daydreaming didn’t take up a big portion of my day, if not all of it. by Eva Walker

Dear Hendrix,

As I write this, you are sleeping soundly on the sofa, maybe dreaming about the alphabet or perhaps Peppa Pig. When you grow up, I can’t wait to fill your head with my stories about touring the world with my rock band, playing at a soccer stadium filled with 40,000 people, and sharing the stage with some mind-bending musicians like Mavis Staples, Weezer, and Death Cab for Cutie.

But none of that would have been possible if I hadn’t learned the value of staring blankly at a wall. It might actually be my favorite activity. Because Henny, I have a confession: I love a blank screen, a bare wall, growing grass, and drying paint. To some, they’re mind-numbingly boring. To me, they sparkle, and they always have.

I don’t remember a time in my life when daydreaming didn’t take up a big portion of my day, if not all of it. Your grandma probably still has my old school report cards to prove it. I spent most of my school days drifting in and out of imaginary worlds. My teachers sounded like Charlie Brown’s—all mumbly and fragmented. As they’d talk in the background of my daydreams, I’d pop back into reality from time to time, wondering Who? What’s a Plymouth Rock? Fractions? Wait, what’s going on outside the window…?

There are others like me, too.

My favorite YouTuber, Michael Stevens, said, “Boredom compels us to try new things; a propensity to boredom is a sign of a healthy mind.” People have invented and discovered amazing things because they were bored. When you allow your thoughts to wander, when your mind becomes a blank page, you can conjure up images and ideas and futures. Some of the songs I’m most proud of writing have come from sitting and staring.

My band, the Black Tones, have a song called “Striped Walls.” I was inspired to write it while, you guessed it, staring at my bedroom wall. I had been gazing at the black-and-white stripes I’d painted a few months before, and then a lyric came to me—“Two chords for two colors / Don’t lose its touch / Feeling happy, feeling lousy / It makes you feel like you’re downtown.”

I picked up my secondhand banjo and began to strum the only two chords I knew. I’d never written a song on banjo before; the Black Tones traditionally play blues-rock. But fast-forward a year later, and there we were, tracking “Striped Walls” with super producer Jack Endino (!), and the song ended up on our debut album.

Just like that. Boredom, man.

That said, my hobby can catch some people off guard. There were times when your father would walk into our bedroom and see me sitting, staring, thinking. “You okay?” he’d ask. I’d turn to look at him and smile calmly, happily, like we were on a dinner date over candlelight. “Yeah, I’m great!” Early on, he may have given me a puzzled look—I know that look. It’s the look that says, Are you needing a straitjacket?

But it’s quite the opposite. Silence, peace, tranquility—these aren’t signs of illness, burnout, or mental exhaustion. To me, they are signs of health. Of course, your dad gets it now. He understands it’s just me exercising my imagination. It’s something I’ve done since childhood, and something I’ve continued to lean into, even into my thirties. I hope to be staring at blank walls until the day I die.

So dear, if you’re ever feeling stuck, uninspired, or restless, try this:

1. Sit down in front of a wall in a quiet room.

2. Stare, think.

3. Make up a world, a story, or an event you could be doing in a parallel universe.

4. Make sure it stirs you.

Embrace a blank page, Henny. A bare day, an unplanned road. Boredom is the perfect canvas upon which to draw with every tool of your imagination.

I love you,

Mom

Eva Walker is a writer, a KEXP DJ, one-half of the rock duo the Black Tones, and mom to her baby girl, Hendrix. She also cowrote the book The Sound of Seattle: 101 Songs That Shaped a City, which was released in 2024. Every month for The Stranger, she writes a letter to Hendrix to share wisdom learned from her experiences—and her mistakes. Read all installments here.

19:28

Link [Scripting News]

Then I had to ask Claude.ai to write me a nice little outliner that runs in the browser. And it did. With a flourish. It was designed to make me the guy who designed outliners for most of a lifetime, and I have to say it was very nicely done, for a two-minute project. Even for a two-week project it's pretty nice. Then I asked it to do a priorArt outline, and it looks really good in the this.how template. The power of standards. And I had a full day of work even while Claude.ai was doing these mind bombs for me.

Link [Scripting News]

I asked for a feature of the outliner from Drummer that it automatically opens a file in read-only mode if there's a URL parameter with the address of an OPML file. Like this.

Quickies [The Stranger]

Got problems? Yes, you do! Email your question for the column to mailbox@savage.love! by Dan Savage 1. My boyfriend swears he’s cut. I say he’s totally uncut. He insists he was circumcised as an infant. How do I convince him? Some circumcisions are “tight” (all of the foreskin removed) and others are “loose” (most of the foreskin left intact). The looser the circumcision, the more “uncut” a man’s cock might appear. So, it’s entirely possible your boyfriend was circumcised as an infant but that his cock — if his circumcision was loose — more closely resembles uncut cocks you’ve admired in porn and encountered IRL. P.S. For the record: Your boyfriend should not have been circumcised in infancy. No infant should be. 2. What’s the best song about cheating? I nominate “One Way Out” by the Allman Brothers. There are so many greats — “Heard It Through the Grapevine,” “The Piña Colada Song,” “Don’t Hurt Yourself” — but in the category of “Best Song About Cheating,”…

[ Read more ]

18:35

Pluralistic: Supreme Court saves artists from AI (03 Mar 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



The Supreme Court building. It has been tinted sepia. Floating in front of it are a 1920s-era Supreme Court, tinted blue-green, their heads replaced with the glaring red eyes of HAL 9000 from Stanley Kubrick's '2001: A Space Odyssey,' and their hands tinted hot pink. They have been distorted with a ripple effect and TV scan lines. The sky is full of dark clouds.

Supreme Court saves artists from AI (permalink)

The Supreme Court has just turned down a petition to hear an appeal in a case that held that AI works can't be copyrighted. By turning down the appeal, the Supreme Court took a massively consequential step to protect creative workers' interests:

https://www.theverge.com/policy/887678/supreme-court-ai-art-copyright

At the core of the dispute is a bedrock of copyright law: that copyright is for humans, and humans alone. In legal/technical terms, "copyright inheres at the moment of fixation of a work of human creativity." Most people – even people who work with copyright every day – have not heard it put in those terms. Nevertheless, it is the foundation of international copyright law, and copyright in the USA.

Here's what it means, in plain English:

a) When a human being,

b) does something creative; and

c) that creative act results in a physical record; then

d) a new copyright springs into existence.

For d) to happen, a), b) and c) all have to happen first. All three steps for copyright have been hotly contested over the years. Remember the "monkey selfie," in which a photographer argued that he was entitled to the copyright after a monkey pointed a camera at itself and pressed the shutter button? That image was not copyrightable, because the monkey was a monkey, not a human, and copyright is only for humans:

https://en.wikipedia.org/wiki/Monkey_selfie_copyright_dispute

Then there's b), "doing something creative." Copyright only applies to creative work, not work itself. It doesn't matter how hard you labor over a piece of "IP" – if that work isn't creative, there's no copyright. For example, you can spend a fortune creating a phone directory, and you will get no copyright in the resulting work, meaning anyone can copy and sell it:

https://en.wikipedia.org/wiki/Feist_Publications,_Inc._v._Rural_Telephone_Service_Co.

If you mix a little creative labor with the hard work, you can get a little copyright. A directory of "all the phone numbers for cool people" can get a "thin" copyright over the arrangement of facts, but such a copyright still leaves space for competitors to make many uses of that work without your permission:

https://pluralistic.net/2021/08/14/angels-and-demons/#owning-culture

Finally, there's c): copyright is for tangible things, not intangibles. Part of the reason choreographers created a notation system for dance moves is that the moves themselves aren't copyrightable:

https://en.wikipedia.org/wiki/Dance_notation

The non-copyrightability of movement is (partly) why the noted sex-pest and millionaire grifter Bikram Choudhury was blocked from claiming copyright on ancient yoga poses (the other reason is that they are ancient!):

https://en.wikipedia.org/wiki/Copyright_claims_on_Bikram_Yoga

Now, AI-generated works are certainly tangible (any work by an AI must involve magnetic traces on digital storage media). The prompts for an AI output can be creative and thus copyrightable (in the same way that notes to a writers' room or from an art-director are). But the output from the AI cannot be copyrighted, because it is not a work of human authorship.

This has been the position of the US Copyright Office from the start, when AI prompters started sending in AI-generated works and seeking to register copyrights in them. Stephen Thaler, a computer scientist who had prompted an image generator to produce a bitmap, kept appealing the Copyright Office's decision, seemingly without regard to the plain facts of the case and the well-established limits of copyright. By attempting to appeal his case all the way to the Supreme Court, Thaler has done every human artist a huge boon: his weak, ill-conceived case was easy for the Supreme Court to reject, and in so doing, the court has cemented the non-copyrightability of AI works in America.

You may have heard the saying, "Hard cases make bad law." Sometimes, there are edge-cases where following the law would result in a bad outcome (think of a Fourth Amendment challenge to an illegal search that lets a murderer go free). In these cases, judges are tempted to interpret the law in ways that distort its principles, and in so doing, create a bad precedent (the evidence from a bad search is permitted, and so cops stop bothering to get a warrant before searching people).

This is one of the rare instances in which a bad case made good law. Thaler's case wasn't even close – it was an absolute loser from the jump. Normally, plaintiffs give up after being shot down by an agency like the Copyright Office or by a lower court. But not Thaler – he stuck with it all the way to the highest court in the land, bringing clarity to an issue that might have otherwise remained blurry and ill-defined for years.

This is wonderful news for creative workers. It means that our bosses must pay humans to do work if they want to be granted copyright on the things they want to sell. The more that humans are involved in the creation of a work, the stronger the copyright on that work becomes – which means that the less a human contributes to a creative work, the harder it will be to prevent others from simply taking it and selling it or giving it away.

This is so important. Our bosses do not want to pay us. When our bosses sue AI companies, it's not because they want to make sure we get paid.

The many pending lawsuits – from news organizations like the New York Times, wholesalers like Getty Images, and entertainment empires like Disney – all seek to establish that training an AI model is a copyright infringement. This is wrong as a technical matter: copyright clearly permits making transient copies of published works for the purpose of factual analysis (otherwise every search engine would be illegal). Copyright also permits performing mathematical analysis on those transient copies. Finally, copyright permits the publication of literary works (including software programs) that embed facts about copyrighted works – even billions of works:

https://pluralistic.net/2023/09/17/how-to-think-about-scraping/

Sure, you can infringe copyright with an AI model – say, by prompting it to produce infringing images. But the mere fact that a technology can be used to infringe copyright doesn't make the technology itself infringing (otherwise every printing press, camera, and computer would be illegal):

https://en.wikipedia.org/wiki/Sony_Corp._of_America_v._Universal_City_Studios,_Inc.

Of course, the fact that copyright currently permits training models doesn't mean that it must. Copyright didn't come down from a mountain on two stone tablets. It's just a law, and laws can be amended. I think that amending copyright to ban training a model would inflict substantial collateral damage on everything from search engines to scholarship, but perhaps you disagree. Maybe you think that you could wordsmith a new copyright law that bans training without whacking a bunch of socially beneficial activities.

Even if that's so, it still wouldn't help artists.

To understand why, consider Universal and Disney's lawsuit against Midjourney. The day that lawsuit dropped, I got a press release from the RIAA, signed by its CEO, Mitch Glazier. Here's how it began:

There is a clear path forward through partnerships that both further AI innovation and foster human artistry. Unfortunately, some bad actors – like Midjourney – see only a zero-sum, winner-take-all game.

The RIAA represents record labels, not film studios, but thanks to vertical integration, the big film studios are also the big record labels. That's why the RIAA alerted the press to its position on this suit.

There's two important things to note about the RIAA press release: how it opened, and how it closed. It opens by stating that the companies involved want "partnerships" with AI companies. In other words, if they establish that they have the right to control training on their archives, they won't use that right to prevent the creation of AI models that compete with creative workers. Rather, they will use that right to get paid when those models are created.

Expanding copyright to cover models isn't about preventing generative AI technologies – it's about ensuring that these technologies are licensed by incumbent media companies. This licensure would ensure that media companies would get paid for training, but it would also let them set the terms on which the resulting models were used. The studios could demand that AI companies put "guardrails" on the resulting models to stop them from being used to output things that might compete with the studios' own products.

That's what the opening of this press-release signifies, but to really understand its true meaning, you have to look at the closing of the release: the signature at the bottom of it, "Mitch Glazier, CEO, RIAA."

Who is Mitch Glazier? Well, he used to be a Congressional staffer. He was the guy responsible for sneaking a clause into an unrelated bill that repealed "termination of transfer" for musicians. "Termination" is a part of copyright law that lets creators take back their rights after 35 years, even if they originally signed a contract for a "perpetual license."

Under termination, all kinds of creative workers who got royally screwed at the start of their careers were able to get their copyrights back and re-sell them. The primary beneficiaries of termination are musicians, who signed notoriously shitty contracts in the 1950s-1980s:

https://pluralistic.net/2021/09/26/take-it-back/

When Mitch Glazier snuck a termination-destroying clause into legislation, he set the stage for the poorest, most abused, most admired musicians in recording history to lose access to money that let them buy a couple bags of groceries and make the rent. He condemned these beloved musicians to poverty.

What happened next is something of a Smurfs Family Christmas miracle. Musicians were so outraged by this ripoff, and their fans were so outraged on their behalf, that Congress convened a special session solely to repeal the clause that Mitch Glazier tricked them into voting for. Shortly thereafter, Glazier was out of Congress:

https://en.wikipedia.org/wiki/Mitch_Glazier

But this story has a happy ending for Glazier, too – he might have been out of his government job, but he had a new gig, as CEO of the Recording Industry Association of America, where he earns more than $1.3 million/year to carry on the work he did in Congress – serving the interests of the record labels:

https://projects.propublica.org/nonprofits/organizations/131669037

Mitch Glazier serves the interests of the labels, not musicians. He can't serve both interests, because every dime a musician takes home is a dime that the labels don't get to realize as profits. Labels and musicians are class enemies. The fact that many musicians are on the labels' side when they sue AI companies does not mean that the labels are on the musicians' side.

What will the media companies do if they win their lawsuits? Glazier gives us the answer in the opening sentence of his press release: they will create "partnerships" with AI companies to train models on the work we produce.

This is the lesson of the past 40 years of copyright expansion. For 40 years, we have expanded copyright in every way: copyright lasts longer, covers more works, prohibits more uses without licenses, establishes higher penalties, and makes it easier to win those penalties.

Today, the media industry is larger and more profitable than at any time, and the share of those profits that artists take home is smaller than ever.

How has the expansion of copyright led to media companies getting richer and artists getting poorer? That's the question that Rebecca Giblin and I answer in our 2022 book Chokepoint Capitalism. In a nutshell: in a world of five publishers, four studios, three labels, two app companies and one company that controls all ebooks and audiobooks, giving a creative worker more copyright is like giving your bullied kid extra lunch money. It doesn't matter how much lunch money you give that kid – the bullies will take it all, and the kid will go hungry:

https://pluralistic.net/2022/08/21/what-is-chokepoint-capitalism/

Indeed, if you keep giving that kid more lunch money, the bullies will eventually have enough dough that they'll hire a fancy ad-agency to blitz the world with a campaign insisting that our schoolkids are all going hungry and need even more lunch money (they'll take that money, too).

When Mitch Glazier – who got a $1m+/year job for the labels after attempting to pauperize musicans – writes on behalf of Disney in support of a copyright suit to establish that copyright prevents training a model without a license, he's not defending creative workers. Disney, after all, is the company that takes the position that if it buys another company, like Lucasfilm or Fox, that it only acquires the right to use the works we made for those companies, but not the obligation to pay us when they do:

https://pluralistic.net/2021/04/29/writers-must-be-paid/#pay-the-writer

If a new, unambiguous copyright over model training comes into existence – whether through a court precedent or a new law – then all our contracts will be amended to non-negotiably require us to assign that right to our bosses. And our bosses will enter into "partnerships" to train models on our works. And those models will exist for one purpose: to let them create works without paying us.

The market concentration that lets our bosses dictate terms to us is getting much worse, and it's only speeding up. Getty Images – who sued Stability AI over image generation – is merging with Shutterstock:

https://globalcompetitionreview.com/gcr-usa/article/photographers-alarmed-gettyshutterstock-merger

And Paramount is merging with Warners:

https://pluralistic.net/2026/02/28/golden-mean/#reality-based-community

This is where this new Supreme Court action comes in. A new copyright that covers training is just one more thing these increasingly powerful members of this increasingly incestuous cartel can force us to sign away. That new copyright isn't something for us to bargain with, it's something we'll bargain away.

But the fact that the works that a model produces are automatically in the public domain is something we can't bargain away. It's a legal fact, not a legal right. It means that the more humans there are involved in the creation of a final work, the more copyrightable that work is.

Media bosses love AI because it dangles the tantalizing possibility of running a business without ego-shattering confrontations with creative workers who know how to do things. It's the solipsistic fantasy of a world without workers, in which a media boss conceives of a "product," prompts a sycophantic AI, and receives an item that's ready for sale:

https://pluralistic.net/2026/01/05/fisher-price-steering-wheel/#billionaire-solipsism

Many bosses know this isn't within reach. They imagine that they'll get the AI to shit out a script and then pay a writer on the cheap to "polish" it. They think they'll get an AI to shit out a motion sequence, a still, or a 3D model and then pay a human artist pennies to put the "final touches" on it. But the Copyright Office's position is that only those human contributions are eligible for a copyright: a few editorial changes, a few pixels or vectors rearranged. Everything else is in the public domain.

Here's the cool part: the only thing our bosses hate more than paying us is when other people take their stuff without paying for it. To achieve the kind of control they demand, they will have to pay us to make creative works.

What's more, the fact that AI-generated works are in the public domain leaves a lot of uses that don't harm creative workers intact. You can amuse yourself and your friends with all the AI slop you can generate; the fact that it's not copyrightable doesn't matter to that use. I happen to think AI "art" is shit, but you do you:

https://pluralistic.net/2024/05/13/spooky-action-at-a-close-up/#invisible-hand

This also means that if you're a writer who likes to brainstorm with a chatbot as you develop an idea, that's fine, so long as the AI's words don't end up in the final product. Creative workers already assemble "mood boards" and clippings for inspiration – so long as these aren't incorporated into the final work, that's fine.

That's just what the Hollywood writers bargained for in their historic strike over AI. They retained the right to use AI if they wanted to, but their bosses couldn't force them to:

https://pluralistic.net/2023/10/01/how-the-writers-guild-sunk-ais-ship/

The Writers Guild were able to bargain with the heavily concentrated studios because they are organized in a union. Not just any union, either: the Writers Guild (along with the other Hollywood unions) are able to undertake "sectoral bargaining" – that's when a union can negotiate a contract with all the employers in a sector at once.

Sectoral bargaining was once the standard for labor relations, but it was outlawed in the 1947 Taft-Hartley Act, which clawed back many of the important labor rights established with the New Deal's National Labor Relations Act. To get Taft-Hartley through Congress, its authors had to compromise by grandfathering in the powerful Hollywood unions, who retained their right to sectoral bargaining. More than 75 years later, that sectoral bargaining right is still protecting those workers.

Our bosses tell us that we should side with them in demanding a new law: a copyright law that covers training an AI model. The mere fact that our bosses want this should set off alarm bells. Just because we're on their side, it doesn't mean they're on our side. They are not.

If we're going to use our muscle to fight for a new law, let it be a sectoral bargaining law – one that covers all workers. You can tell that this would be good for us because our bosses would hate it, and every other worker in America would love it. The Writers Guild used sectoral bargaining to achieve something that 40 years of copyright expansion failed at: it made creative workers richer, rather than giving us another way to be angry about how our work is being used.

(Image: Cryteria, CC BY 3.0, modified)


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago Cornell University harasses maker of Cornell blog https://web.archive.org/web/20060621110535/http://cornell.elliottback.com/archives/2006/03/02/cornell-university-nastygram/

#15yrsago Explaining creativity to a Martian https://locusmag.com/feature/cory-doctorow-explaining-creativity-to-a-martian/

#15yrsago Scott Walker smuggles ringers into the capital for the legislative session https://www.theawl.com/2011/03/in-madison-scott-walker-packed-his-budget-address-with-ringers/

#15yrsago Measuring radio’s penetration in 1936 https://www.flickr.com/photos/70118259@N00/albums/72157626051208969/with/5490099786

#10yrsago Rube Goldberg musical instrument that runs on 2,000 steel ball-bearings https://www.youtube.com/watch?v=IvUU8joBb1Q

#10yrsago KKK vs D&D: the surprising, high fantasy vocabulary of racism https://en.wikipedia.org/wiki/Ku_Klux_Klan_titles_and_vocabulary

#10yrsago UK minister compares adblocking to piracy, promises action https://www.theguardian.com/media/2016/mar/02/adblocking-protection-racket-john-whittingdale

#10yrsago Some ad-blockers are tracking you, shaking down publishers, and showing you ads https://www.wired.com/2016/03/heres-how-that-adblocker-youre-using-makes-money/

#10yrsago ISIS opsec: jihadi tech bureau recommends non-US crypto tools https://web.archive.org/web/20160303095904/http://www.dailydot.com/politics/isis-apple-fbi-congressional-hearing-crypto-international/

#10yrsago Apple v FBI isn’t about security vs privacy; it’s about America’s security vs FBI surveillance https://www.wired.com/2016/03/feds-let-cyber-world-burn-lets-put-fire/


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026
  • "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



Colophon (permalink)

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 (1020 words today, 41284 total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Medium (no ads, paywalled):

https://doctorow.medium.com/

Twitter (mass-scale, unrestricted, third-party surveillance and advertising):

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

18:28

The Big Idea: Kirsten Kaschock [Whatever]

Does a mad scientist do what they do out of sheer love of the game, or because they can’t just up and quit doing the whole mad science thing? Do they love their work, or is it just unhealthy obsession? Author Kirsten Kaschock looks at some of fiction’s most well-known inventors in the Big Idea for her newest novel, An Impossibility of Crows, drawing parallels between herself, her main character, and all the truly mad creators of the past.

KIRSTEN KASCHOCK:

A crow the size of a horse.

The dream terrified me but not the way you’d think. I was drawn in. A little hypnotized. Even in the dream I wanted to understand how the thing came into being. And, in the dream, the crow wasn’t threatening me—just doing crow things.

The crow kept coming back, not at night, but in my wandering mind or whenever I saw an actual crow. I’d look at one walking in the snow or huddled in a tree and think to myself, “What if?” That’s when I started sketching the crow’s maker: Agnes Krahn. 

I needed to know who would decide to build (I often call it building rather than breeding for reasons I can’t quite explain) a crow of such size and why? To figure that out, I started writing as if I were Agnes—a scientist, of course—commenting on her world in real time. The book had to be a diary. But because she was a scientist, an ex-chemist to be exact, Agnes also included her research in these pages. And then, other odds and ends kept arriving, including letters from Agnes’s long dead mother. It wasn’t until that moment that I realized that the book would be so closely linked to Mary Shelley’s Frankenstein—which is also epistolary and multivocal. But there was already a marked difference. Agnes, unlike Victor Frankenstein, is a woman.

How many other unhinged women scientists have found their way into literature? Fewer, I’d wager than their male counterparts. I imagined Agnes’s reasons for building Solo (the crow’s name is Solo) to be different than most of the mad scientists’ I have read, and more like Mary Shelley’s own backstory: never knowing her own mother, her loss of a child, a need to prove herself to the poets among which she found herself. 

I knew Agnes wasn’t driven by ego or ambition, exactly. She isn’t selfless either. God no. But her obsession with increasing the size of the bird has a reason other than narcissism: she wants to provide her daughter with wings.

This is where Agnes and the character of Victor F. part ways. When I realized why Agnes was building Solo, she started to resemble other creators from other stories. 

Agnes wants to give her daughter this crow, but what her daughter thinks or feels about this is irrelevant. Agnes is trying to provide an escape route for someone who—I learned while writing her—does not feel particularly trapped. But Agnes is oblivious to how her daughter perceives herself. In this way, Agnes is as monstrous as most mothers. 

The model I used for their relationship is actually that of a father and son—Daedalus and Icarus. I’ve long loved this Greek myth, although it was taught to me as a tragedy of disobedience: warned about the dangers of flight, Icarus cannot help but fly too close to the sun. But what if the fault lies with Daedalus, who should have known his child better? In my novel, Agnes does not know her daughter at all. This is both their tragedy and another mystery I had to solve: Why doesn’t she? Writing a Gothic Horror novel turned into a bit of a rabbit hole… a Russian doll. The book kept asking me why things are the way they are. Why people do the things they do. And at the bottom of every version of Agnes I found another woman, another layer of hurt.

To be honest, this is why I write in the first place. To get to the under-questions, the ones below the surfaces of thought.

Solo, the crow, is in some ways a cipher: a darkness onto which I was reading human nature. But Solo is also very real. He is an immense crow, with all the intelligence of a crow (maybe more), and thus he is horrifying in his own right. That’s how we read each other, too. We know people as what they are to us, and only if we are incredibly lucky and attentive do we ever learn who they are beyond our needs, fears, and desires of them.

Agnes is the only one in the book who doesn’t see Solo as an existential threat, or not until it is too late. She may not admit it to herself, but as she builds him—he grows into a replacement for her daughter rather than a gift to her. She is Mary Shelley. She is Victor Frankenstein. She is Daedalus. And she is Gepetto. As she gets more and more drawn into her experiment, her attention to her family wanes and her devotion to the crow increases. I, myself, am married to a scientist. I am an artist. We have both done this with our work. We do this. Agnes is also him. And she is me.

Her madness I am familiar with: Agnes wants to create a life larger than her own. Somehow, she believes that Solo can free her from her guilt and grief. 

The big idea in An Impossibility of Crows is this: when you bury your feelings they don’t stay dead—and when they rise up, they may find a form beyond any you can hope to control. I began writing with a single frightening image. I moved quickly from there to considering the crow’s creator. Then, in seeking to understand Agnes, I progressed through a series of models towards my own reasons for making. 

I had a teacher once who said that writers only write about three things: sex, death, and writing. And then there’s this old joke: if it’s not one thing, it’s your mother. I think many things can be true at once. Nothing is ever Solo. And everything is. 

—-

An Impossibility of Crows: Amazon|Barnes & Noble|Bookshop

Author socials: Website|Instagram|Facebook

17:56

Slog AM: Our War With Iran Spirals, Clintons Questioned About Epstein, British Columbia Adopts Permanent Daylight Saving [The Stranger]

The Stranger's morning news roundup. by Vivian McCall

Iran: Israel and US strikes have killed 787 people in Iran. Washington warned the “hardest hits” are to come. What? Combined forces have already killed Supreme Leader Ali Khamenei, hit the state broadcaster, and damaged Golestan Palace in Tehran, a UNESCO World Heritage Site. Overnight, the US and Israel bombed Tehran. This morning, Iran struck the US Embassy in Saudi Arabia; Israel hit Beirut, Lebanon in answer to yesterday’s strikes from the Iranian-backed Hezbollah. The US and Israel say this descending spiral into wider war is necessary to end Iran’s nuclear ambitions.

What did a girl’s school have to do with those nuclear ambitions? The roof collapsed when missiles hit Shajareh Tayyebeh (The Good Tree) on Saturday, killing 165 and wounding 95, according to Iranian media. Social media accounts and websites linked to Israel claimed the school was part of an “Islamic Revolutionary Guard Corps base.” However, a report from Al Jazeera’s digital investigations unit determined the school had been clearly separate from the adjacent military site for at least a decade, throwing into question the accuracy of the intelligence that led to this bombing.

New Bus News: Sound Transit broke ground on the Stride S3 line, a rapid bus line connecting the north end of Lake Washington from Bothell to Shoreline, writes The Urbanist. The S3 is one of three lines under construction, upgrades to existing express routes. Doors are expected to pop open in 2028. See? The suburbs can have nice things, too.

Behind in Getting Ahead: British Columbia is adopting permanent daylight saving time on March 8. We’ll be in sync with Vancouver until November 1, when we fall back an hour once again. We want the same—Washington passed that law in 2019—but we need Congressional approval. British Columbia has had the ability to do this since 2019, and has been dutifully waiting for us, but nobody can wait forever with all these “recent actions from the US” going on.

Candidate Alert: Ordained minister, community organizer and Lavender Rights Project executive director Jaelynn Scott is running for a seat in the state house. The opportunity came by way of musical chairs: When State Sen. Rebecca Saldaña announced her run for King County Council, 37th District Rep. Chipalo Street told the Washington State Standard he was running for her seat, leaving his own vacant. Micah interviewed Scott ahead of her announcement.

Where’s Rep. The Lorax? Budget legislation in the House could dismantle a state program to plant and sustain trees in Washington.

Epstein Intrigue: The House Oversight Committee released video of the Clintons testifying in closed door depositions for its Epstein investigation. Did they burst this thing wide open? No. 

Bill: Bill described his relationship with Epstein, the convicted sex offender and “information-hungry person,” as “cordial,” not a true friendship (though who would admit to that now?). During questioning, he recalled talking with Trump about Epstein at one of the president’s golf courses about 20 years ago (Trump told Bill they’d fallen out over a property deal). Bill Clinton is the first former president forced to testify in Congress, which Democrats hope will set a precedent that makes it easier to call President Trump to the stand. But, when asked if Trump should testify, Bill replied “that’s for you to decide,” adding nothing Trump said to him made him think Trump was involved in anything “improper.” Bill did not, however, “exonerate” Trump as Rep. James R. Comer of Kentucky claimed.

Hillary: Rep. Nancy Mace, the transphobe from South Carolina, took the lead questioning Hillary, who considered the deposition over a person “that I don’t believe I ever even met” a waste of her time. Mace pressed Hillary for her feelings about photos in the Epstein files of her husband with young women. “I am not going to speculate,” Hillary responded. Rep. Lauren Boebert, the fool from Colorado, pressed Hillary about Pizzagate, the 2015 conspiracy theory that Democrats were running a child sex ring in the basement of a D.C. pizzeria that inspired a man to “investigate” with his AR-15 in hand, firing several shots. Hillary said she couldn’t believe Boebert was mentioning it. (I can—she’s Lauren Boebert? Besides, pizzagate is piping hot at the moment. The Epstein files contain 900 odd references to pizza.)

Deadliest Catch Star Dead at 25: Todd Meadows, the newest deckhand aboard the Aleutian Lady, died while filming the show on the Bering Sea. Captain Rick Shelford announced Meadows’ death on Facebook yesterday, writing that it was the most tragic day in the crabbing boat’s history. Meadows had three sons.

Fire: About 40 people were displaced when an apartment building caught fire in Everett yesterday morning.

Ida-Holy Shit: Republican Governor Brad Little cares little for the disabled people in his state. After Trump’s Big Beautiful cuts to Medicaid, Little released a budget that would all but dissolve home care for people with disabilities. Home care is not a luxury, it is a need. Meanwhile, Idaho legislators want to make it a crime for any organization to help undocumented immigrants, churches included. Next on the agenda, puppy mills that really mill puppies.

Let the monthslong stomachache commence. Primaries for midterms in Texas, North Carolina, and Arkansas are underway. For some reason, the Associated Press is teaming up with the prediction market site Kalshi so people can bet on the outcome. Kalshi struck a similar deal to become CNN’s “official prediction market partner” in December. Surely, this can only be good for democracy.

Wet: Rain is pitter-pattering between 10 a.m. and 4 p.m., followed by one mysterious hour of patchy fog. Tonight, more rain. Tomorrow, even more rain. Thursday, you guessed it, rain. Friday? Rain again. Saturday and Sunday, rain is likely, but not for sure. Monday, rain, straight-up.

17:07

CBP Tapped Into the Online Advertising Ecosystem To Track Peoples’ Movements (404 Media) [LWN.net]

This 404 Media article looks at how the US Customs and Border Protection agency (CBP) is using location data from phones to track the location of people of interest.

Specifically, CBP says the data was in part sourced via real-time bidding, or RTB. Whenever an advertisement is displayed inside an app, a near instantaneous bidding process happens with companies vying to have their advert served to a certain demographic. A side effect of this is that surveillance firms, or rogue advertising companies working on their behalf, can observe this process and siphon information about mobile phones, including their location. All of this is essentially invisible to an ordinary phone user, but happens constantly.

We should note that the minimal advertising shown on LWN is not delivered via this bidding system.

15:35

Link [Scripting News]

I asked Claude.ai to "write me a nice little spreadsheet program that runs in the browser." Here it is. It looks like a spreadsheet app but it's missing most of the really good commands, like defining the value in one cell with the sum of two other cells using point and click. If you go down this path, ask it to keep a user's guide current, and then ask it to put in features, and just describe them in standard spreadsheet terminology. The trouble starts when you want to make something that doesn't have a standard terminology yet because it's new.

[$] Free software needs free tools [LWN.net]

One of the contradictions of the modern open-source movement is that projects which respect user freedoms often rely on proprietary tools that do not: communities often turn to non-free software for code hosting, communication, and more. At Configuration Management Camp (CfgMgmtCamp) 2026, Jan Ainali spoke about the need for open-source projects to adopt open tools; he hoped to persuade new and mature projects to switch to open alternatives, even if just one tool, to reduce their dependencies on tech giants and support community-driven infrastructure.

14:49

Garrett: To update blobs or not to update blobs [LWN.net]

Matthew Garrett examines the factors that go into the decision about whether to install a firmware update or not.

I trust my CPU vendor. I don't trust my CPU vendor because I want to, I trust my CPU vendor because I have no choice. I don't think it's likely that my CPU vendor has designed a CPU that identifies when I'm generating cryptographic keys and biases the RNG output so my keys are significantly weaker than they look, but it's not literally impossible. I generate keys on it anyway, because what choice do I have? At some point I will buy a new laptop because Electron will no longer fit in 32GB of RAM and I will have to make the same affirmation of trust, because the alternative is that I just don't have a computer.

Security updates for Tuesday [LWN.net]

Security updates have been issued by AlmaLinux (containernetworking-plugins, gnutls, kernel, libpng, and skopeo), Debian (firefox-esr, php8.2, and spip), Fedora (erlang and python-pillow), Red Hat (go-toolset:rhel8, golang, and yggdrasil), SUSE (cups, fluidsynth, gvfs, haproxy, libsoup, libsoup-3_0-0, mozilla-nss, python-azure-core, and shim), and Ubuntu (git and mailman).

13:14

Radar Trends to Watch: March 2026 [Radar]

The explosion of interest in OpenClaw was one of the last items added to the February 1 trends. In February, things went crazy. We saw a social network for agents (no humans allowed, though they undoubtedly sneak on); a multiplayer online game for agents (again, no humans); many clones of OpenClaw, most of which attempt to mitigate its many security problems; and much more. Andrej Karpathy has said that OpenClaw is the next layer on top of AI agents. If the security issues can be resolved (which is a good question), he’s probably right.

AI

  • Moonshine Note Taker is a free and open source voice transcription application for taking notes. It runs locally: The model runs on your hardware and no data is ever sent to a server.
  • Nano Banana’s image generation was breathtakingly good. Google has now released Nano Banana 2, a.k.a. Gemini 3.1 Flash Image, which promises Nano Banana image quality at speed.
  • Claude Remote Control allows you to continue a desktop Claude Code session from any device.
  • Putting OpenClaw into a sandbox isn’t enough. Keeping AI Agents from accidentally (or intentionally) doing damage is a permissions problem.
  • Alibaba has released a fleet of mid-size Qwen 3.5 models. Their theme is providing more intelligence with less computing cycles—something we all need to appreciate. 
  • Important advice for agentic engineering: Always start by running the tests.
  • Google has released Lyria 3, a model that generates 30-second musical clips from a verbal description. You can experiment with it through Gemini.
  • There’s a new protocol in the agentic stack. Twilio has released the Agent-2-Human (A2H) protocol, which facilitates handoffs between agents and humans as they collaborate.
  • Yet more and more model releases: Claude Sonnet 4.6, followed quickly by Gemini 3.1 Pro. If you care, Gemini 3.1 Pro currently tops the abstract reasoning benchmarks.
  • Kimi Claw is yet another variation on OpenClaw. Kimi Claw uses Moonshot AI’s most advanced model, Kimi K2.5 Thinking model, and offers one-click setup in Moonshot’s cloud.
  • NanoClaw is another OpenClaw-like AI-based personal assistant that claims to be more security conscious. It runs agents in sandboxed Linux containers with limited access to outside resources, limiting abuse. 
  • OpenAI has released a research preview of GPT-5.3-Codex-Spark, an extremely fast coding model that runs on Cerebras hardware. The company claims that it’s possible to collaborate with Codex in “real time” because it gives “near-instant” results.
  • RAG may not be the newest idea in the AI world, but text-based RAG is the basis for many enterprise applications of AI. But most enterprise data includes graphs, images, and even text in formats like PDF. Is this the year for multimodal RAG?
  • Z.ai has released its latest model, GLM-5. GLM-5 is an open source “Opus-class” model. It’s significantly smaller than Opus and other high-end models, though still huge; the mixture-of-experts model has 744B parameters, with 40B active.
  • Waymo has created a World Model to model driving behavior. It’s capable of building lifelike simulations of traffic patterns and behavior, based on video collected from Waymo’s vehicles.
  • Recursive language models (RLMs) solve the problem of context rot, which happens when output from AI degrades as the size of the context increases. Drew Breunig has an excellent explanation.
  • You’ve heard of Moltbook—and perhaps your AI agent participates. Now there’s SpaceMolt—a massive multiplayer online game that’s exclusively for agents. 
  • Anthropic and OpenAI simultaneously released Claude Opus 4.6 and GPT-5.3-Codex, both of which offer improved models for AI-assisted programming. Is this “open warfare,” as AINews claims? You mean it hasn’t been open warfare prior to now?
  • If you’re excited by OpenClaw, you might try NanoBot. It has 1% of OpenClaw’s code, written so that it’s easy to understand and maintain. No promises about security—with all of these personal AI assistants, be careful!
  • OpenAI has launched a desktop app for macOS along the lines of Claude Code. It’s something that’s been missing from their lineup. Among other things, it’s intended to help programmers work with multiple agents simultaneously.
  • Pete Warden has put together an interactive guide to speech embeddings for engineers, and published it as a Colab notebook.
  • Aperture is a new tool from Tailscale for “providing visibility into coding agent usage,” allowing organizations to understand how AI is being used and adopted. It’s currently in private beta.
  • OpenAI Prism is a free workspace for scientists to collaborate on research. Its goal is to help scientists build a new generation of AI-based tooling. Prism is built on ChatGPT 5.2 and is open to anyone with a personal ChatGPT account.

Programming

  • Anthropic is offering six months of Claude Max 20x free to open source maintainers.
  • Pi is a very simple but extensible coding agent that runs in your terminal.
  • Researchers at Anthropic have vibe-coded a C compiler using a fleet of Claude agents. The experiment cost roughly $20,000 worth of tokens, and produced 100,000 lines of Rust. They are careful to say that the compiler is far from production quality—but it works. The experiment is a tour de force demonstration of running agents in parallel. 
  • I never knew that macOS had a sandboxing tool. It looks useful. (It’s also deprecated, but looks much easier to use than the alternatives.)
  • GitHub now allows pull requests to be turned off completely, or to be limited to collaborators. They’re doing this to allow software maintainers to eliminate AI-generated pull requests, which are overwhelming many developers.
  • After an open source maintainer rejected a pull request generated by an AI agent, the agent published a blog post attacking the maintainer. The maintainer responded with an excellent analysis, asking whether threats and intimidation are the future of AI.
  • As Simon Willison has written, the purpose of programming isn’t to write code but to deliver code that works. He’s created two tools, Showboat and Rodney, that help AI agents demo their software so that the human authors can verify that the software works. 
  • Anil Dash asks whether codeless programming, using tools like Gas Town, is the future.

Security

  • There is now an app that alerts you when someone in the vicinity has smart glasses.
  • Agentsh provides execution layer security by enforcing policies to prevents agents from doing damage. As far as agents are concerned, it’s a replacement for bash.
  • There’s a new kind of cyberattack: attacks against time itself. More specifically, this means attacks against clocks and protocols for time synchronization. These can be devastating in factory settings.
  • What AI Security Research Looks Like When It Works” is an excellent overview of the impact of AI on discovering vulnerabilities. AI generates a lot of security slop, but it also finds critical vulnerabilities that would have been opaque to humans, including 12 in OpenSSL.
  • Gamifying prompt injection—well, that’s new. HackMyClaw is a game (?) in which participants send email to Flu, an OpenClaw instance. The goal is to force Flu to reply with secrets.env, a file of “confidential” data. There is a prize for the first to succeed.
  • It was only a matter of time: There’s now a cybercriminal who is actively stealing secrets from OpenClaw users. 
  • Deno’s secure sandbox might provide a way to run OpenClaw safely
  • IronClaw is a personal AI assistant modeled after OpenClaw that promises better security. It always runs in a sandbox, never exposes credentials, has some defenses against prompt injection, and only makes requests to approved hosts.
  • A fake recruiting campaign is hiding malware in programming challenges that candidates must complete in order to apply. Completing the challenge requires installing malicious dependencies that are hosted on legitimate repositories like npm and PyPI.
  • Google’s Threat Intelligence Group has released its quarterly analysis of adversarial AI use. Their analysis includes distillation, or collecting the output of a frontier AI to train another AI.
  • Google has upgraded its tools for removing personal information and images, including nonconsensual explicit images, from its search results. 
  • Tirith is a new tool that hooks into the shell to block bad commands. This is often a problem with copy-and-paste commands that use curl to pipe an archive into bash. It’s easy for a bad actor to create a malicious URL that is indistinguishable from a legitimate URL.
  • Claude Opus 4.6 has been used to discover 500 0-day vulnerabilities in open source code. While many open source maintainers have complained about AI slop, and that abuse isn’t likely to stop, AI is also becoming a valuable tool for security work.
  • Two coding assistants for VS Code are malware that send copies of all the code to China. Unlike lots of malware, they do their job as coding assistants well, making it less likely that victims will notice that something is wrong. 
  • Bizarre Bazaar is the name for a wave of attacks against LLM APIs, including self-hosted LLMs. The attacks attempt to steal resources from LLM infrastructure, for purposes including cryptocurrency mining, data theft, and reselling LLM access. 
  • The business model for ransomware has changed. Ransomware is no longer about encrypting your data; it’s about using stolen data for extortion. Small and mid-size businesses are common targets. 

Web

  • Cloudflare has a service called Markdown for Agents that converts websites from HTML to Markdown when an agent accesses them. Conversion makes the pages friendlier to AI and significantly reduces the number of tokens needed to process them.
  • WebMCP is a proposed API standard that allows web applications to become MCP servers. It’s currently available in early preview in Chrome.
  • Users of Firefox 148 (which should be out by the time you read this) will be able to opt out of all AI features.

Operations

  • Wireshark is a powerful—and complex—packet capture tool. Babyshark is a text interface for Wireshark that provides an amazing amount of information with a much simpler interface.
  • Microsoft is experimenting with using lasers to etch data in glass as a form of long-term data storage.

Things

  • You need a desk robot. Why? Because it’s there. And fun.
  • Do you want to play Doom on a Lego brick? You can.

CodeSOD: Blocked Up [The Daily WTF]

Agatha has inherited some Windows Forms code. This particular batch of such code falls into that delightful category of code that's wrong in multiple ways, multiple times. The task here is to disable a few panels worth of controls, based on a condition. Or, since this is in Spanish, "bloquear controles". Let's see how they did it.

private void BloquearControles()
{
        bool bolBloquear = SomeConditionTM; // SomeConditionTM = a bunch of stuff. Replaced for clarity.

        // Some code. Removed for clarity.
        
        // private System.Windows.Forms.Panel pnlPrincipal;
        foreach (Control C in this.pnlPrincipal.Controls)
        {
                if (C.GetType() == typeof(System.Windows.Forms.TextBox))
                {
                        C.Enabled = bolBloquear;
                }
                if (C.GetType() == typeof(System.Windows.Forms.ComboBox))
                {
                        C.Enabled = bolBloquear;
                }
                if (C.GetType() == typeof(System.Windows.Forms.CheckBox))
                {
                        C.Enabled = bolBloquear;
                }
                if (C.GetType() == typeof(System.Windows.Forms.DateTimePicker))
                {
                        C.Enabled = bolBloquear;
                }
                if (C.GetType() == typeof(System.Windows.Forms.NumericUpDown))
                {
                        C.Enabled = bolBloquear;
                }
        }
        
        // private System.Windows.Forms.GroupBox grpProveedor;
        foreach (Control C1 in this.grpProveedor.Controls)
        {
                if (C1.GetType() == typeof(System.Windows.Forms.TextBox))
                {
                        C1.Enabled = bolBloquear;
                }
                if (C1.GetType() == typeof(System.Windows.Forms.ComboBox))
                {
                        C1.Enabled = bolBloquear;
                }
                if (C1.GetType() == typeof(System.Windows.Forms.CheckBox))
                {
                        C1.Enabled = bolBloquear;
                }
                if (C1.GetType() == typeof(System.Windows.Forms.DateTimePicker))
                {
                        C1.Enabled = bolBloquear;
                }
                if (C1.GetType() == typeof(System.Windows.Forms.NumericUpDown))
                {
                        C1.Enabled = bolBloquear;
                }
        }

        // private System.Windows.Forms.GroupBox grpDescuentoGeneral;
        foreach (Control C2 in this.grpDescuentoGeneral.Controls)
        {
                if (C2.GetType() == typeof(System.Windows.Forms.TextBox))
                {
                        C2.Enabled = bolBloquear;
                }
                if (C2.GetType() == typeof(System.Windows.Forms.ComboBox))
                {
                        C2.Enabled = bolBloquear;
                }
                if (C2.GetType() == typeof(System.Windows.Forms.CheckBox))
                {
                        C2.Enabled = bolBloquear;
                }
                if (C2.GetType() == typeof(System.Windows.Forms.DateTimePicker))
                {
                        C2.Enabled = bolBloquear;
                }
                if (C2.GetType() == typeof(System.Windows.Forms.NumericUpDown))
                {
                        C2.Enabled = bolBloquear;
                }
        }

        // Some more code. Removed for clarity.
}

This manages two group boxes and a panel. It checks a condition, then iterates across every control beneath it, and sets their enabled property on the control. In order to do this, it checks the type of the control for some reason.

Now, a few things: every control inherits from the base Control class, which has an Enabled property, so we're not doing this check to make sure the property exists. And every built-in container control automatically passes its enabled/disabled state to its child controls. So there's a four line version of this function where we just set the enabled property on each container.

This leaves us with two possible explanations. The first, and most likely, is that the developer responsible just didn't understand how these controls worked, and how inheritance worked, and wrote this abomination as an expression of that ignorance. This is extremely plausible, extremely likely, and honestly, our best case scenario.

Because our worse case scenario is that this code's job isn't to disable all of the controls. The reason they're doing type checking is that there are some controls used in these containers that don't match the types listed. The purpose of this code, then, is to disable some of the controls, leaving others enabled. Doing this by type would be a terrible way to manage that, and is endlessly confusing. Worse, I can't imagine how this behavior is interpreted by the end users; the enabling/disabling of controls following no intuitive pattern, just filtered based on the kind of control in use.

The good news is that Agatha can point us towards the first option. She adds:

They decided to not only disable the child controls one by one but to check their type and only disable those five types, some of which aren't event present in the containers. And to make sure this was WTF-worthy the didn't even bother to use else-if so every type is checked for every child control

She also adds:

At this point I'm not going to bother commenting on the use of GetType() == typeof() instead of is to do the type checking.

Bad news, Agatha: you did bother commenting. And even if you didn't, don't worry, someone would have.

[Advertisement] Picking up NuGet is easy. Getting good at it takes time. Download our guide to learn the best practice of NuGet for the Enterprise.

12:35

On Moltbook [Schneier on Security]

The MIT Technology Review has a good article on Moltbook, the supposed AI-only social network:

Many people have pointed out that a lot of the viral comments were in fact posted by people posing as bots. But even the bot-written posts are ultimately the result of people pulling the strings, more puppetry than autonomy.

“Despite some of the hype, Moltbook is not the Facebook for AI agents, nor is it a place where humans are excluded,” says Cobus Greyling at Kore.ai, a firm developing agent-based systems for business customers. “Humans are involved at every step of the process. From setup to prompting to publishing, nothing happens without explicit human direction.”

Humans must create and verify their bots’ accounts and provide the prompts for how they want a bot to behave. The agents do not do anything that they haven’t been prompted to do.

I think this take has it mostly right:

What happened on Moltbook is a preview of what researcher Juergen Nittner II calls “The LOL WUT Theory.” The point where AI-generated content becomes so easy to produce and so hard to detect that the average person’s only rational response to anything online is bewildered disbelief.

We’re not there yet. But we’re close.

The theory is simple: First, AI gets accessible enough that anyone can use it. Second, AI gets good enough that you can’t reliably tell what’s fake. Third, and this is the crisis point, regular people realize there’s nothing online they can trust. At that moment, the internet stops being useful for anything except entertainment.

12:14

Talk in Bern Switzerland [Richard Stallman's Political Notes]

Richard Stallman will speak on March 11 in Bern, Switzerland, for the Guild42 group, at Berner Fachhochschule, Brückenstrasse 73, 3005 Bern

Title: Free/Libre Software and Freedom, touching on how they relate to machine learning

An explanation of the issues of justice and injustice in distribution and running of software, and in use of computing services and dis-services, with discussion of how this relates to machine learning, including both Artificial Intelligence and Pretend Intelligence.

Location: Brückenstrasse 73, CH-3012 Bern, Room: Aula

Time: 17:30

As usual, the event will have around an hour of presentation and around an hour of Q&A.

Urgent: Block construction of deportation prison-warehouses [Richard Stallman's Political Notes]

US citizens: call on your state legislators to block construction of deportation prison-warehouses in your state.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Protect Vote by Mail [Richard Stallman's Political Notes]

US citizens: call on Protect Vote by Mail. Tell Congress to act now! Demand the USPS Restore Real-Time Postmarks.

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: Tel IEA Ignore Chris Wright's threats [Richard Stallman's Political Notes]

Everyone: Tell the IEA: Ignore Chris Wright’s Threats, Follow the Science on Climate Change.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Campaign funds from Palantir [Richard Stallman's Political Notes]

US citizens: call on your congressional officials not to accept campaign funds from Palantir.

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: Stop deportation thug use of Palantir's surveillance [Richard Stallman's Political Notes]

US citizens: call on Congress to stop the deportation thug department from using Palantir's massive surveillance system to track and target immigrants.

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: block Nextstar-TEGNA merger [Richard Stallman's Political Notes]

US citizens: call on Congress and the FCC to protect local news, by blocking the Nexstar-TEGNA merger.

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: Fight to impeach Bondi [Richard Stallman's Political Notes]

US citizens: call on your congressional representatives to fight to impeach Bondi.

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: Stop next great recession [Richard Stallman's Political Notes]

US citizens: call on your representatives and senators to take action to stop the next great recession!

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Here is what I used as my letter text. I hope it inspires you.

The wrecker's henchmen at the Securities and Exchange Commission are laying the groundwork to bring back one of the core financial products that led to millions of foreclosures during the 2008 crash — even as economic and climate conditions make its return all the more destabilizing. The SEC is intended to act as Wall Street’s top regulator, but they want to do the opposite of their job. Then the megabanks will "need" another big bailout, and Republicans will eagerly give them one. Please fight hard to prevent this big theft.

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.

11:42

Michael Ablassmeier: pbsindex - file backup index [Planet Debian]

If you take backups using the proxmox-backup-client and you wondered what backup may include a specific file, the only way to find out is to mount the backup and search for the files.

For regular file backups, the Proxmox Backup Server frontend provides a pcat1 file for download, whose binary format is somewhat undocumented but actually includes a listing of the files backed up.

A Proxmox backup server datastore includes the same pcat1 file as blob index (.pcat1.didx). So to actually beeing able to tell which backup contains which files, one needs to:

1) Open the .pcat1.didx file and find out required blobs, see format documentation

2) Reconstruct the .pcat1 file from the blobs

3) Parse the pcat1 file and output the directory listing.

I’ve implemented this in pbsindex which lets you create a central file index for your backups by scanning a complete PBS datastore.

Lets say you want to have a file listing for a specific backup, use:

 pbsindex --chunk-dir /backup/.chunks/ /backup/host/vm178/2026-03-02T10:47:57Z/catalog.pcat1.didx
 didx uuid=7e4086a9-4432-4184-a21f-0aeec2b2de93 ctime=2026-03-02T10:47:57Z chunks=2 total_size=1037386
 chunk[0] start=0 end=344652 size=344652 digest=af3851419f5e74fbb4d7ca6ac3bc7c5cbbdb7c03d3cb489d57742ea717972224
 chunk[1] start=344652 end=1037386 size=692734 digest=e400b13522df02641c2d9934c3880ae78ebb397c66f9b4cf3b931d309da1a7cc
 d ./usr.pxar.didx
 d ./usr.pxar.didx/bin
 l ./usr.pxar.didx/bin/Mail
 f ./usr.pxar.didx/bin/[ size=55720 mtime=2025-06-04T15:14:05Z
 f ./usr.pxar.didx/bin/aa-enabled size=18672 mtime=2025-04-10T15:06:25Z
 f ./usr.pxar.didx/bin/aa-exec size=18672 mtime=2025-04-10T15:06:25Z
 f ./usr.pxar.didx/bin/aa-features-abi size=18664 mtime=2025-04-10T15:06:25Z
 l ./usr.pxar.didx/bin/apropos

It also lets you scan a complete datastore for all existing .pcat1.didx files and store the directory listings in a SQLite database for easier searching.

10:42

The gap between “I” and “no one” [Seth's Blog]

This is where empathy lies, and it’s an easy chasm to fall into.

“I can’t imagine eating durian ice cream,” is not the same as “no one likes durian ice cream.”

We fail as marketers, editors and project managers when we can’t find the empathy to bridge the gap. It’s a lovely shortcut to make things for yourself, to imagine that you are the client, the reader or the customer. But most of the time, you’re not.

“It’s not for me, but it might be for you.”

09:21

Gender Goals by Jey Pawlik [Oh Joy Sex Toy]

Gender Goals by Jey Pawlik

What’s that feeling when you don’t want to date someone but want to BE them? It could be GENDER GOALS! This is something I’d struggled with for nearly my entire life and I thank the trans community for putting this into words for me. It wouldn’t be the first time either!If you haven’t seen or […]

03:56

Matthew Garrett: To update blobs or not to update blobs [Planet Debian]

A lot of hardware runs non-free software. Sometimes that non-free software is in ROM. Sometimes it’s in flash. Sometimes it’s not stored on the device at all, it’s pushed into it at runtime by another piece of hardware or by the operating system. We typically refer to this software as “firmware” to differentiate it from the software run on the CPU after the OS has started1, but a lot of it (and, these days, probably most of it) is software written in C or some other systems programming language and targeting Arm or RISC-V or maybe MIPS and even sometimes x862. There’s no real distinction between it and any other bit of software you run, except it’s generally not run within the context of the OS3. Anyway. It’s code. I’m going to simplify things here and stop using the words “software” or “firmware” and just say “code” instead, because that way we don’t need to worry about semantics.

A fundamental problem for free software enthusiasts is that almost all of the code we’re talking about here is non-free. In some cases, it’s cryptographically signed in a way that makes it difficult or impossible to replace it with free code. In some cases it’s even encrypted, such that even examining the code is impossible. But because it’s code, sometimes the vendor responsible for it will provide updates, and now you get to choose whether or not to apply those updates.

I’m now going to present some things to consider. These are not in any particular order and are not intended to form any sort of argument in themselves, but are representative of the opinions you will get from various people and I would like you to read these, think about them, and come to your own set of opinions before I tell you what my opinion is.

THINGS TO CONSIDER

  • Does this blob do what it claims to do? Does it suddenly introduce functionality you don’t want? Does it introduce security flaws? Does it introduce deliberate backdoors? Does it make your life better or worse?

  • You’re almost certainly being provided with a blob of compiled code, with no source code available. You can’t just diff the source files, satisfy yourself that they’re fine, and then install them. To be fair, even though you (as someone reading this) are probably more capable of doing that than the average human, you’re likely not doing that even if you are capable because you’re also likely installing kernel upgrades that contain vast quantities of code beyond your ability to understand4. We don’t rely on our personal ability, we rely on the ability of those around us to do that validation, and we rely on an existing (possibly transitive) trust relationship with those involved. You don’t know the people who created this blob, you likely don’t know people who do know the people who created this blob, these people probably don’t have an online presence that gives you more insight. Why should you trust them?

  • If it’s in ROM and it turns out to be hostile then nobody can fix it ever

  • The people creating these blobs largely work for the same company that built the hardware in the first place. When they built that hardware they could have backdoored it in any number of ways. And if the hardware has a built-in copy of the code it runs, why do you trust that that copy isn’t backdoored? Maybe it isn’t and updates would introduce a backdoor, but in that case if you buy new hardware that runs new code aren’t you putting yourself at the same risk?

  • Designing hardware where you’re able to provide updated code and nobody else can is just a dick move5. We shouldn’t encourage vendors who do that.

  • Humans are bad at writing code, and code running on ancilliary hardware is no exception. It contains bugs. These bugs are sometimes very bad. This paper describes a set of vulnerabilities identified in code running on SSDs that made it possible to bypass encryption secrets. The SSD vendors released updates that fixed these issues. If the code couldn’t be replaced then anyone relying on those security features would need to replace the hardware.

  • Even if blobs are signed and can’t easily be replaced, the ones that aren’t encrypted can still be examined. The SSD vulnerabilities above were identifiable because researchers were able to reverse engineer the updates. It can be more annoying to audit binary code than source code, but it’s still possible.

  • Vulnerabilities in code running on other hardware can still compromise the OS. If someone can compromise the code running on your wifi card then if you don’t have a strong IOMMU setup they’re going to be able to overwrite your running OS.

  • Replacing one non-free blob with another non-free blob increases the total number of non-free blobs involved in the whole system, but doesn’t increase the number that are actually executing at any point in time.

Ok we’re done with the things to consider. Please spend a few seconds thinking about what the tradeoffs are here and what your feelings are. Proceed when ready.

I trust my CPU vendor. I don’t trust my CPU vendor because I want to, I trust my CPU vendor because I have no choice. I don’t think it’s likely that my CPU vendor has designed a CPU that identifies when I’m generating cryptographic keys and biases the RNG output so my keys are significantly weaker than they look, but it’s not literally impossible. I generate keys on it anyway, because what choice do I have? At some point I will buy a new laptop because Electron will no longer fit in 32GB of RAM and I will have to make the same affirmation of trust, because the alternative is that I just don’t have a computer. And in any case, I will be communicating with other people who generated their keys on CPUs I have no control over, and I will also be relying on them to be trustworthy. If I refuse to trust my CPU then I don’t get to computer, and if I don’t get to computer then I will be sad. I suspect I’m not alone here.

Why would I install a code update on my CPU when my CPU’s job is to run my code in the first place? Because it turns out that CPUs are complicated and messy and they have their own bugs, and those bugs may be functional (for example, some performance counter functionality was broken on Sandybridge at release, and was then fixed with a microcode blob update) and if you update it your hardware works better. Or it might be that you’re running a CPU with speculative execution bugs and there’s a microcode update that provides a mitigation for that even if your CPU is slower when you enable it, but at least now you can run virtual machines without code in those virtual machines being able to reach outside the hypervisor boundary and extract secrets from other contexts. When it’s put that way, why would I not install the update?

And the straightforward answer is that theoretically it could include new code that doesn’t act in my interests, either deliberately or not. And, yes, this is theoretically possible. Of course, if you don’t trust your CPU vendor, why are you buying CPUs from them, but well maybe they’ve been corrupted (in which case don’t buy any new CPUs from them either) or maybe they’ve just introduced a new vulnerability by accident, and also you’re in a position to determine whether the alleged security improvements matter to you at all. Do you care about speculative execution attacks if all software running on your system is trustworthy? Probably not! Do you need to update a blob that fixes something you don’t care about and which might introduce some sort of vulnerability? Seems like no!

But there’s a difference between a recommendation for a fully informed device owner who has a full understanding of threats, and a recommendation for an average user who just wants their computer to work and to not be ransomwared. A code update on a wifi card may introduce a backdoor, or it may fix the ability for someone to compromise your machine with a hostile access point. Most people are just not going to be in a position to figure out which is more likely, and there’s no single answer that’s correct for everyone. What we do know is that where vulnerabilities in this sort of code have been discovered, updates have tended to fix them - but nobody has flagged such an update as a real-world vector for system compromise.

My personal opinion? You should make your own mind up, but also you shouldn’t impose that choice on others, because your threat model is not necessarily their threat model. Code updates are a reasonable default, but they shouldn’t be unilaterally imposed, and nor should they be blocked outright. And the best way to shift the balance of power away from vendors who insist on distributing non-free blobs is to demonstrate the benefits gained from them being free - a vendor who ships free code on their system enables their customers to improve their code and enable new functionality and make their hardware more attractive.

It’s impossible to say with absolute certainty that your security will be improved by installing code blobs. It’s also impossible to say with absolute certainty that it won’t. So far evidence tends to support the idea that most updates that claim to fix security issues do, and there’s not a lot of evidence to support the idea that updates add new backdoors. Overall I’d say that providing the updates is likely the right default for most users - and that that should never be strongly enforced, because people should be allowed to define their own security model, and whatever set of threats I’m worried about, someone else may have a good reason to focus on different ones.


  1. Code that runs on the CPU before the OS is still usually described as firmware - UEFI is firmware even though it’s executing on the CPU, which should give a strong indication that the difference between “firmware” and “software” is largely arbitrary ↩︎

  2. And, obviously 8051 ↩︎

  3. Because UEFI makes everything more complicated, UEFI makes this more complicated. Triggering a UEFI runtime service involves your OS jumping into firmware code at runtime, in the same context as the OS kernel. Sometimes this will trigger a jump into System Management Mode, but other times it won’t, and it’s just your kernel executing code that got dumped into RAM when your system booted. ↩︎

  4. I don’t understand most of the diff between one kernel version and the next, and I don’t have time to read all of it either. ↩︎

  5. There’s a bunch of reasons to do this, the most reasonable of which is probably not wanting customers to replace the code and break their hardware and deal with the support overhead of that, but not being able to replace code running on hardware I own is always going to be an affront to me. ↩︎

Feeds

FeedRSSLast fetchedNext fetched after
@ASmartBear XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
a bag of four grapes XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Ansible XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Bad Science XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Black Doggerel XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Blog - Official site of Stephen Fry XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Charlie Brooker | The Guardian XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Charlie's Diary XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Chasing the Sunset - Comics Only XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Coding Horror XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
Cory Doctorow's craphound.com XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Cory Doctorow, Author at Boing Boing XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Ctrl+Alt+Del Comic XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Cyberunions XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
David Mitchell | The Guardian XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Deeplinks XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
Diesel Sweeties webcomic by rstevens XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Dilbert XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Dork Tower XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Economics from the Top Down XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Edmund Finney's Quest to Find the Meaning of Life XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
EFF Action Center XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Enspiral Tales - Medium XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Events XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Falkvinge on Liberty XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Flipside XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Flipside XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Free software jobs XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Full Frontal Nerdity by Aaron Williams XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
General Protection Fault: Comic Updates XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
George Monbiot XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Girl Genius XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Groklaw XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Grrl Power XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Hackney Anarchist Group XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Hackney Solidarity Network XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
http://blog.llvm.org/feeds/posts/default XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
http://eng.anarchoblogs.org/feed/atom/ XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
http://feed43.com/3874015735218037.xml XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
http://flatearthnews.net/flatearthnews.net/blogfeed XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
http://fulltextrssfeed.com/ XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
http://london.indymedia.org/articles.rss XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&amp;_render=rss XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
http://planet.gridpp.ac.uk/atom.xml XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
http://shirky.com/weblog/feed/atom/ XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
http://thecommune.co.uk/feed/ XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
http://theness.com/roguesgallery/feed/ XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
http://www.airshipentertainment.com/buck/buckcomic/buck.rss XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
http://www.airshipentertainment.com/growf/growfcomic/growf.rss XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
http://www.airshipentertainment.com/myth/mythcomic/myth.rss XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
http://www.baen.com/baenebooks XML 00:28, Saturday, 07 March 01:12, Saturday, 07 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 00:28, Saturday, 07 March 01:12, Saturday, 07 March
http://www.godhatesastronauts.com/feed/ XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
http://www.tinycat.co.uk/feed/ XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
https://anarchism.pageabode.com/blogs/anarcho/feed/ XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
https://broodhollow.krisstraub.comfeed/ XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
https://debian-administration.org/atom.xml XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
https://elitetheatre.org/ XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
https://feeds.feedburner.com/Starslip XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
https://feeds2.feedburner.com/GeekEtiquette?format=xml XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
https://hackbloc.org/rss.xml XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
https://kajafoglio.livejournal.com/data/atom/ XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
https://philfoglio.livejournal.com/data/atom/ XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
https://pixietrixcomix.com/eerie-cutiescomic.rss XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
https://pixietrixcomix.com/menage-a-3/comic.rss XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
https://propertyistheft.wordpress.com/feed/ XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
https://requiem.seraph-inn.com/updates.rss XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
https://studiofoglio.livejournal.com/data/atom/ XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
https://thecommandline.net/feed/ XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
https://torrentfreak.com/subscriptions/ XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
https://web.randi.org/?format=feed&type=rss XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
https://www.dcscience.net/feed/medium.co XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
https://www.DropCatch.com/domain/steampunkmagazine.com XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
https://www.DropCatch.com/domain/ubuntuweblogs.org XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
https://www.DropCatch.com/redirect/?domain=DyingAlone.net XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
https://www.freedompress.org.uk:443/news/feed/ XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
https://www.goblinscomic.com/category/comics/feed/ XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
https://www.loomio.com/blog/feed/ XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
https://www.newstatesman.com/feeds/blogs/laurie-penny.rss XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
https://www.patreon.com/graveyardgreg/posts/comic.rss XML 00:49, Saturday, 07 March 01:36, Saturday, 07 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 00:28, Saturday, 07 March 01:11, Saturday, 07 March
https://x.com/statuses/user_timeline/22724360.rss XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Humble Bundle Blog XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
I, Cringely XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Irregular Webcomic! XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Joel on Software XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
Judith Proctor's Journal XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Krebs on Security XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Lambda the Ultimate - Programming Languages Weblog XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Looking For Group XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
LWN.net XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Mimi and Eunice XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Neil Gaiman's Journal XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
Nina Paley XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
O Abnormal – Scifi/Fantasy Artist XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Oglaf! -- Comics. Often dirty. XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Oh Joy Sex Toy XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
Order of the Stick XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
Original Fiction Archives - Reactor XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
OSnews XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Paul Graham: Unofficial RSS Feed XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Penny Arcade XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Penny Red XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
PHD Comics XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Phil's blog XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
Planet Debian XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Planet GNU XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Planet Lisp XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Pluralistic: Daily links from Cory Doctorow XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
PS238 by Aaron Williams XML 00:49, Saturday, 07 March 01:37, Saturday, 07 March
QC RSS XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
Radar XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
RevK®'s ramblings XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
Richard Stallman's Political Notes XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Scenes From A Multiverse XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
Schneier on Security XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
SCHNEWS.ORG.UK XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
Scripting News XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Seth's Blog XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
Skin Horse XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Spinnerette XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
Tales From the Riverbank XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
The Adventures of Dr. McNinja XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
The Bumpycat sat on the mat XML 00:35, Saturday, 07 March 01:15, Saturday, 07 March
The Daily WTF XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
The Monochrome Mob XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
The Non-Adventures of Wonderella XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
The Old New Thing XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
The Open Source Grid Engine Blog XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
The Stranger XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
towerhamletsalarm XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
Twokinds XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
UK Indymedia Features XML 00:35, Saturday, 07 March 01:17, Saturday, 07 March
Uploads from ne11y XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
Uploads from piasladic XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March
Use Sword on Monster XML 00:49, Saturday, 07 March 01:36, Saturday, 07 March
Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily XML 00:56, Saturday, 07 March 01:42, Saturday, 07 March
what if? XML 00:35, Saturday, 07 March 01:16, Saturday, 07 March
Whatever XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
Whitechapel Anarchist Group XML 00:28, Saturday, 07 March 01:17, Saturday, 07 March
WIL WHEATON dot NET XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
wish XML 00:28, Saturday, 07 March 01:13, Saturday, 07 March
Writing the Bright Fantastic XML 00:28, Saturday, 07 March 01:12, Saturday, 07 March
xkcd.com XML 00:28, Saturday, 07 March 01:11, Saturday, 07 March