Saturday, 05 July

22:21

Taavi Väänänen: Tracking my train travel by parsing tickets in emails [Planet Debian]

Rumour has it that I might be a bit of a train nerd. At least I want to collect various nerdy data about my travels. Historically that data has lived in manual form in several places,1 but over the past year and a half I've been working on a toy project to collect most of that information into a custom tool.

That toy project2 uses various sources to get information about trains to fill up its database: for example, in Finland Fintraffic, the organization responsible for railway traffic management, publishes very comprehensive open data about almost everything that's moving on the Finnish railway network. Unfortunately, I cannot be on all of the trains.3 Thus I need to tell the system details about my journeys.

The obvious solution is to make a form that lets me save that data. Which I did, but I got very quickly bored of filling out that form, and as regular readers of this blog know, there is no reason to settle for a simple but boring solution when the alternative is to make something that is ridiculously overengineered.

Parsing data out of my train tickets

Finnish long-distance trains generally require train-specific seat reservations, which means VR (the train company) knows which trains I am on. We just need to find a way to extract that information in some machine-readable format. So my plan for the ridiculously overengineered solution was to parse the booking emails to get the details I need.

Now, VR ticket emails include the data I want in a couple of different formats: they're included as text in the HTML email body, they're in the embedded calendar invite, as text in the included PDF ticket, and encoded in the Aztec Code in the included PDF ticket. I chose to parse the last option with the hopes of building something that could be ported to parse other operators' tickets with relative ease.

Example Aztec code
Example Aztec code

After a bit of digging (thank you to the KDE Itinerary people for documenting this!) I stumbled upon an European Union Agency for Railways PDF titled ELECTRONIC SEAT/BERTH RESERVATION AND ELECTRONIC PRODUCTION OF TRANSPORT DOCUMENTS - TRANSPORT DOCUMENTS (RCT2 STANDARD) which, in its Appendix C.1, describes how the information is encoded in the code.4 (As a side note, various sources call these codes SSB version 1 codes, although that term isn't used in this specification. So maybe there are more specifications about the format that I haven't discovered yet!)

I then wrote a parser in Go for the binary data embedded in these codes. So far it works, although I wouldn't be surprised if there are some edge cases that it doesn't handle. In particular, the spec specifies a custom lookup table for converting between text and binary data, and that only has support for characters 0-9 and A-Z. But Finnish railway station codes can also use Ä and Ö.. maybe I need to buy a ticket to a station with one of those.

Extracting barcodes out of emails

A parser just for the binary format isn't enough here if the intended source input is the emails that VR sends upon making a booking. Time to write a single-purpose email server! In short, the logic in the server, again written in Go and with the help of go-smtp and go-message, is:

  • Accept any mail with a reasonable body size
  • Process through all body parts
  • For all PDF parts, extract all images
  • For all images, run them through ZXing
  • For all decoded barcodes, try to parse them with my new ticket parsing library I mentioned earlier
  • If any tickets are found, send the data from them and any metadata to the main backend, which will save them to a database

The custom mail server exposes an LMTP interface over TCP for my internet-facing mail servers to forward to. I chose LMTP for this because it seemed like a better fit in theory than normal (E)SMTP. I've since discovered that curl doesn't support LMTP which makes development much harder, and in practice there's no benefit of LMTP here as all mails are being sent to the backend in a single request regardless of the number of recipients, so maybe I'll migrate it to regular SMTP at some point.

Side quest time

The last missing part is automatically forwarding the ticket mails to the new service. I've routed a dedicated subdomain to the new service, and the backend is configured to allocate addresses like i2v44g2pygkcth64stjgyuqz@somedomain.example for each user. That's great if we wanted to manually forward mails to the service, but we can go one step above that. I created a dedicated email alias in my mail server config that routes both to my regular mailbox and the service address. That way I can update my VR account to use the alias and have mails automatically processed while still receiving backup copies of the tickets (and any other important mail that VR might send me).

Unfortunately that last part turns out something that's easier said than done. Logging in on the website, I'm greeted by this text stating I need to contact customer service by phone to change the address associated with my account.5 After a bit of digging, I noticed that the mobile app suggests filling out a feedback form in order to change the address. So I filled that, and after a day or two I got a "confirm you want to change your email" mail. Success!


  1. Including (but not limited to): a page of this website, the notes app on my phone, and an uMap map. ↩︎

  2. Which I'm not directly naming here because I still think it needs a lot more work before being presentable, but if you're really interested it's not that hard to find out. ↩︎

  3. Someone should invent human cloning so that we can fix this. ↩︎

  4. People who know much more about railway ticketing than I do were surprised when I told them this format is still in use somewhere. So, uh, sorry if you were expecting a nice universal worldwide standard! ↩︎

  5. In case you have not guessed yet, I do not like making phone calls. ↩︎

19:14

Link [Scripting News]

WordLand v0.5.19 -- Lots of little fixes.

Link [Scripting News]

An improvement in WordLand on the server, we now post metadata to WordPress, along with the HTML rendering so that code that runs on the server can now access and possibly in the future even talk back to WordLand. You never know where this stuff can go if the developers take advantage of opportunities to interop.

15:21

Sergio Cipriano: How I finally tracked my Debian uploads correctly [Planet Debian]

How I finally tracked my Debian uploads correctly

A long time ago, I became aware of UDD (Ultimate Debian Database), which gathers various Debian data into a single SQL database.

At that time, we were trying to do something simple: list the contributions (package uploads) of our local community, Debian Brasília. We ended up with a script that counted uploads to unstable and experimental.

I was never satisfied with the final result because some uploads were always missing. Here is an example:

debci (3.0) experimental; urgency=medium
...
   [ Sergio de almeida cipriano Junior ]
   * Fix Style/GlovalVars issue
   * Rename blacklist to rejectlist
...

I made changes in debci 3.0, but the upload was done by someone else. This kind of contribution cannot be tracked by that script.

Then, a few years ago, I learned about Minechangelogs, which allows us to search through the changelogs of all Debian packages currently published.

Today, I decided to explore how this was done, since I couldn't find anything useful for that kind of query in UDD's tables.

That's when I came across ProjectB. It was my first time hearing about it. ProjectB is a database that stores all the metadata about the packages in the Debian archive, including the changelogs of those packages.

Now that I'm a Debian Developer, I have access to this database. If you also have access and want to try some queries, you can do this:

$ ssh <username>@mirror.ftp-master.debian.org -N -L 15434:danzi.debian.org:5435
$ psql postgresql://guest@localhost:15434/projectb?sslmode=allow

In the end, it finally solved my problem.

Using the code below, with UDD, I get 38 uploads:

import psycopg2

contributor = 'almeida cipriano'

try:
    connection = psycopg2.connect(
        user="udd-mirror",
        password="udd-mirror",
        host="udd-mirror.debian.net",
        port="5432",
        database="udd"
    )

    cursor = connection.cursor()

    query = f"SELECT source,version,date,distribution,signed_by_name \
FROM public.upload_history \
WHERE changed_by_name ILIKE '%{contributor}%' \
ORDER BY date;"

    cursor.execute(query)
    records = cursor.fetchall()

    print(f"I have {len(records)} uploads.")

    cursor.close()
    connection.close()

except (Exception, psycopg2.Error) as error:
    print("Error while fetching data from PostgreSQL", error)

Using the code bellow, with ProjectB, I get 43 uploads (the correct amount):

import psycopg2

contributor = 'almeida cipriano'

try:
    # SSH tunnel is required to access the database:
    # ssh <username>@mirror.ftp-master.debian.org -N -L 15434:danzi.debian.org:5435
    connection = psycopg2.connect(
        user="guest",
        host="localhost",
        port="15434",
        database="projectb",
        sslmode="allow"
    )
    connection.set_client_encoding('UTF8')

    cursor = connection.cursor()

    query = f"SELECT c.source, c.version, c.changedby \
FROM changes c \
JOIN changelogs ch ON ch.id = c.changelog_id \
WHERE c.source != 'debian-keyring' \
  AND (\
    ch.changelog ILIKE '%{contributor}%' \
    OR c.changedby ILIKE '%{contributor}%' \
  )\
ORDER BY c.seen;"

    cursor.execute(query)
    records = cursor.fetchall()

    print(f"I have {len(records)} uploads.")

    cursor.close()
    connection.close()

except (Exception, psycopg2.Error) as error:
    print("Error while fetching data from PostgreSQL", error)

It feels good to finally solve this itch I've had for years.

Sergio Cipriano: Disable sleep on lid close [Planet Debian]

Disable sleep on lid close

I am using an old laptop in my homelab, but I want to do everything from my personal computer, with ssh. The default behavior in Debian is to suspend when the laptop lid is closed, but it's easy to change that, just edit

/etc/systemd/logind.conf

and change the line

#HandleLidSwitch=suspend

to

HandleLidSwitch=ignore

then

$ sudo systemctl restart systemd-logind

That's it.

Sergio Cipriano: How I deployed this Website [Planet Debian]

How I deployed this Website

I will describe the step-by-step process I followed to make this static website accessible on the Internet.

DNS

I bought this domain on NameCheap and am using their DNS for now, where I created these records:

Record Type Host Value
A sergiocipriano.com 201.54.0.17
CNAME www sergiocipriano.com

Virtual Machine

I am using Magalu Cloud for hosting my VM, since employees have free credits.

Besides creating a VM with a public IP, I only needed to set up a Security Group with the following rules:

Type Protocol Port Direction CIDR
IPv4 / IPv6 TCP 80 IN Any IP
IPv4 / IPv6 TCP 443 IN Any IP

Firewall

The first thing I did in the VM was enabling ufw (Uncomplicated Firewall).

Enabling ufw without pre-allowing SSH is a common pitfall and can lock you out of your VM. I did this once :)

A safe way to enable ufw:

$ sudo ufw allow OpenSSH      # or: sudo ufw allow 22/tcp
$ sudo ufw allow 'Nginx Full' # or: sudo ufw allow 80,443/tcp
$ sudo ufw enable

To check if everything is ok, run:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                           Action      From
--                           ------      ----
22/tcp (OpenSSH)             ALLOW IN    Anywhere                  
80,443/tcp (Nginx Full)      ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))        ALLOW IN    Anywhere (v6)             
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6) 

Reverse Proxy

I'm using Nginx as the reverse proxy. Since I use the Debian package, I just needed to add this file:

/etc/nginx/sites-enabled/sergiocipriano.com

with this content:

server {
    listen 443 ssl;      # IPv4
    listen [::]:443 ssl; # IPv6

    server_name sergiocipriano.com www.sergiocipriano.com;

    root /path/to/website/sergiocipriano.com;
    index index.html;

    location / {
        try_files $uri /index.html;
    }
}

server {
    listen 80;
    listen [::]:80;

    server_name sergiocipriano.com www.sergiocipriano.com;

    # Redirect all HTTP traffic to HTTPS
    return 301 https://$host$request_uri;
}

TLS

It's really easy to setup TLS thanks to Let's Encrypt:

$ sudo apt-get install certbot python3-certbot-nginx
$ sudo certbot install --cert-name sergiocipriano.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Deploying certificate
Successfully deployed certificate for sergiocipriano.com to /etc/nginx/sites-enabled/sergiocipriano.com
Successfully deployed certificate for www.sergiocipriano.com to /etc/nginx/sites-enabled/sergiocipriano.com

Certbot will edit the nginx configuration with the path to the certificate.

HTTP Security Headers

I decided to use wapiti, which is a web application vulnerability scanner, and the report found this problems:

  1. CSP is not set
  2. X-Frame-Options is not set
  3. X-XSS-Protection is not set
  4. X-Content-Type-Options is not set
  5. Strict-Transport-Security is not set

I'll explain one by one:

  1. The Content-Security-Policy header prevents XSS and data injection by restricting sources of scripts, images, styles, etc.
  2. The X-Frame-Options header prevents a website from being embedded in iframes (clickjacking).
  3. The X-XSS-Protection header is deprecated. It is recommended that CSP is used instead of XSS filtering.
  4. The X-Content-Type-Options header stops MIME-type sniffing to prevent certain attacks.
  5. The Strict-Transport-Security header informs browsers that the host should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be upgraded to HTTPS. Additionally, on future connections to the host, the browser will not allow the user to bypass secure connection errors, such as an invalid certificate. HSTS identifies a host by its domain name only.

I added this security headers inside the HTTPS and HTTP server block, outside the location block, so they apply globally to all responses. Here's how the Nginx config look like:

add_header Content-Security-Policy "default-src 'self'; style-src 'self';" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

I added always to ensure that nginx sends the header regardless of the response code.

To add Content-Security-Policy header I had to move the css to a separate file, because browsers block inline styles under strict CSP unless you allow them explicitly. They're considered unsafe inline unless you move to a separate file and link it like this:

<link rel="stylesheet" href="./assets/header.css">

Sergio Cipriano: Why package X is installed in your Debian [Planet Debian]

Why package X is installed in your Debian

When I was looking for alternatives to mount a USB flash drive without sudo, I came across udisks2. To my surprise, this package was already installed on my machine.

I found these two methods to understand why:

$ apt rdepends udisks2 --installed
udisks2
Reverse Depends:
  Depends: gnome-disk-utility (>= 2.7.6)
  Depends: gvfs-daemons
  Recommends: fwupd
$ aptitude why udisks2
i   task-gnome-desktop Depends gnome-core                
i A gnome-core         Depends gnome-disk-utility (>= 46)
i A gnome-disk-utility Depends udisks2 (>= 2.7.6)

The i marker means installed packages.

The A marker means the package was installed automatically.

10:28

Diagnostics [Seth's Blog]

“If it breaks, we’ll know how to fix it.”

Old cars had an oil light, and that was about it.

Often, we build things hoping they’ll work. But complex systems are more resilient when we build in the diagnostics for failure from the start.

A multi-unit retail chain, a medical practice, a school–they need a dashboard and process for finding and fixing things before the entire enterprise fails. A personal finance plan and a career probably need one too. It’s easier to do that well if we plan for it.

They don’t use canaries in coal mines any more, but you might need a few.

PS if you’re already doing this, you know. If you’re not, this is the moment to begin.

08:21

NVIDIA is full of shit [OSnews]

Since the disastrous launch of the RTX 50 series, NVIDIA has been unable to escape negative headlines: scalper bots are snatching GPUs away from consumers before official sales even begin, power connectors continue to melt, with no fix in sight, marketing is becoming increasingly deceptive, GPUs are missing processing units when they leave the factory, and the drivers, for which NVIDIA has always been praised, are currently falling apart. And to top it all off, NVIDIA is becoming increasingly insistent that media push a certain narrative when reporting on their hardware.

↫ Sebin Nyshkim

Out of all the issues listed here – and there are many, and each is bad enough on their own – it’s the frame generation and related pressure campaigns on reviewers that really get on my nerves the most. Technologies like DLSS (rendering at a lower internal resolution scaling that up) and frame generation (injecting fake “AI” frames to jack up the frame rate) can be fine technologies when used at the consumer’s discretion to find a balance between improved perceived performance in exchange for blurry image quality and artefacting, but we’ve now reached a point where NVIDIA will only boast about performance figures with these technologies enabled, downsides be damned.

If that wasn’t misleading enough, the company is also pressuring reviewers who don’t enable these technologies, and focus on real frames, real resolutions, and this, real performance. If you don’t comply, you’re not getting the next crop of GPUs in early access. It’s the kind of shit Apple pulls all the time, and we need less of it, not more.

Just don’t buy NVIDIA. They’re already a terrible choice if you’re running anything other than Windows, but the company’s recent behaviour and serious missteps have made the choice for AMD or Intel only more obvious.

Redox gets network booting, work on UNIX domain sockets continues [OSnews]

Redox continues to make progress, and as another month has passed us by, it’s time for another monthly update. This past month, the focus has been on UNIX domain sockets, which are needed for Redox’ goal of running Wayland.

As we continue to move forward with our plans for Wayland, a key technology for Wayland support is the ability to send file descriptors over Unix Domain Sockets. File descriptor sending is also an important part of many other OS features, including Capability-based Security.

Our Redox Summer of Code project to implement that ability has been progressing very well. Ibuki, a new member of the Redox team, has jumped right into the deep end, and implemented the sendmg and recvmsg functionality, and continues to move forward with work on UDS.

↫ Ribbon and Ron Williams

You can read more about the UNIX domain sockets progress in a detailed post on the Redox website. Redox now also supports network booting through PXE, but for now, only UEFI is supported. Of course, all of this work is topped off with the usual slew of fixes in relibc, RedoxFS, various drivers, and more, as well updated ports across the board.

Is an Intel N100 a better value than a Raspberry Pi? [OSnews]

All of this to say: value is complicated. The Pi 5 is much more compact and slightly more power efficient (especially at idle) compared to the cheapest N1XX Intel systems. The Intel systems are better suited for a desktop use case. The Pi 5 can be run off PoE power, for easier one-cable networking + power. The Intel systems are more compatible with a wider range of software (not the least of which is anything requiring Windows).

↫ Jeff Geerling

Intel’s N100 and N150 are vastly underappreciated. The mini laptop I reviewed over a year ago is built around the N100, and I still use it every day for watching YouTube, writing OSNews posts, and so on. I never run into performance issues, battery life is excellent, and I don’t have to deal with the annoyances of using ARM. The catch is that you’re going to want to use Linux – I use Fedora KDE – because Windows’ performance on the N100 is dreadful.

I don’t think the jump from the N100 to the N150 is worthwhile enough to buy the new version of my mini laptop, so I’ll stick with what I have. I do hope Intel continues the Nxxx line or processors, because it offers something no other x86 chip offers: more than reasonable performance at low power usage for an incredibly low price.

00:14

Proscribing Palestine Action [Richard Stallman's Political Notes]

*Palestine Action is part of Britain's proud history of protest. Proscribing it is an assault on democracy.*

British food co-op boycotting exports from countries with human rights abuses [Richard Stallman's Political Notes]

A nationwide British food co-op has decided to boycott exports from a list of countries, on account of their widespread human rights abuses: Afghanistan, Belarus, Central African Republic, North Korea, Democratic Republic of Congo, Haiti, Iran, Israel, Libya, Mali, Myanmar, Russia, Somalia, South Sudan, Sudan, Syria and Yemen.

Campaign to repress journalism intimidating students writing for school papers [Richard Stallman's Political Notes]

The wrecker's campaign to repress journalism is intimidating many students who write or wrote for school newspapers. They are asking the newspapers to delete their articles.

The USA's tree of liberty was always flawed, but now it may be poisoned entirely. The wrecker's axe is cutting into the heart of the trunk.

National government system for internet accounts in China [Richard Stallman's Political Notes]

China has set up a national government system for internet accounts, enabling uniform ID checks on all platforms.

Every unified national system of internet accounts is a scheme ready-made for repression. Whatever its purpose is — even if it is only to verify a person's age — it will enable the government to track all of everyone's internet use, on all servers that the state chooses to impose this on. Combine that with a would-be autocrat and it is disaster.

Government building database to list all citizens [Richard Stallman's Political Notes]

The US government is building a database to list all citizens. This will be dangerous, because it won't list all citizens, only those whom the federal government has verified.

The article says that it *could provide local and state governments a powerful method to check the citizenship of almost all Americans without additional documentation requirements.* But that must be confusion. Even if the data base has a record about you, you will still have to authenticate yourself as that person. What papers will that require?

The "voter ID" method of voter suppression demands that voters show up-to-date government ID. That disenfranchises many citizens who had to move to a different address and have not had the time to update their driver's licenses since. Republicans adopt this method because it tends to stop poor people, students, and old people from voting.

What will happen to people with such driver's licenses if a state checks this citizenship data base? Will it suppress their votes?

Friday, 04 July

22:49

22:35

Friday Squid Blogging: How Squid Skin Distorts Light [Schneier on Security]

New research.

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:14

Ubuntu 25.10 to drop support for effectively all existing RISC-V hardware, focuses on future RISC-V hardware instead [OSnews]

A recent bug report filed against Ubuntu’s upgrading tool confirmed a major change with regards to the RISC-V requirements for the upcoming Ubuntu 25.10 release — most existing RISC-V devices will not be able to run Ubuntu 25.10.

How come?

↫ Joey Sneddon at omgubuntu.co.uk

RISC-V just isn’t delivering. That’s the cold and harsh truth more and more people are having to deal with, such as Chimera Linux dropping RISC-V support because the ecosystem is simply lacking the kind of powerful and available hardware to sustain itself (Chimera got lucky, though, and gained access to a Milk-V Pioneer through Adélie Linux). The number of systems and boards that are both powerful and available is close enough to zero that it might as well be zero, and if neither users nor developers can buy RISC-V hardware, what’s the point in supporting it?

The issue for Ubuntu specifically is that version 25.10 of the distribution intends to target only the RVA23 baseline RISC-V profile, while currently Ubuntu supports RVA20 as the baseline. This higher baseline profile requires a number of extensions to the instruction set that no existing hardware yet supports, making 25.10 effectively a clean break for all existing RISC-V hardware. In other words, if you’re running Ubuntu on RISC-V hardware today, you won’t be able to upgrade to 25.10 or higher.

RISC-V really needs vastly improved hardware availability, because right now it’s just not delivering on the years of promises.

The Amiga 3000 UNIX and Sun Microsystems: deal or no deal? [OSnews]

Amiga lore is full of exciting tales. Many of them are retold to demonstrate how the incompetence of Commodore’s management destroyed a platform that, by rights, was destined for success. Coulda, shoulda, and the Amiga woulda risen as rightful ruler of all other computer platforms, forever and ever. Amen.

One of those stories is about how Sun Microsystems allegedly showed interest in the Amiga 3000 during the early 1990s. It’s a classic Amiga anecdote, usually recounted without much reflection, and one I’ve certainly helped perpetuate.

Alas, the more I think about it, the less it adds up. Fact or factoid? Let’s speculate!

↫ Carl Svensson

Great speculation with some solid reasoning and sourcing. Considering that had been some minor joint marketing between Sun and Commodore, my money is on the talks around that deal birthing rumours about more extensive Sun involvement in the Amiga 3000. At this point in time, however, decades after the fact and with several conflicting account, it’s unlikely we’ll ever get a solid answer.

22:00

The Spoils Of War [Penny Arcade]

I was just talking about how Mork's hunger for the written word exposed him to all manner of richness, and one of those was a book called The Martian that a man named Andy Weir self-published first on his blog and then on Kindle. Weir wrote more books later, apparently he "caught the bug," and one of them was called Project Hail Mary. There is a spoiler for the book that Mike has judiciously protected me from for four years, and at around two minutes into the trailer they just straight up let the space-cat out of the starbag.

21:28

Matthias Geiger: Using the debputy language server in Debian (with neovim) [Planet Debian]

Since some time now debputy is available in the archive. It is a declarative buildsystem for debian packages, but also includes a Language Server (LS) part. A LS is a binary can hook into any client (editor) supporting the LSP (Language Server Protocol) and deliver syntax highlighting, completions, warnings and …

19:42

RSS ==> ActivityPub [Scripting News]

I'd love to see a bridge from RSS to ActivityPub. I've asked people at various companies if they'd do this. I'm happy to help with the software but operating the service is something for a trusted company to do.

I think this would go all the way to putting the "open" in open social web, because people who already know how to build RSS feeds would be able to quickly write apps that hook into AP networks. And of course it wouldn't have to be limited to RSS, it could build on Atom and RDF equally well.

It think it's tragic that it's taking Ghost, for example, so long to get their service up fully, and it suggests that smaller devs don't stand a chance. I can't wake up one day and have an idea of something that would work well with Mastodon, for example, and have a prototype running the next day.

If you think this is a good idea, post a link to this post somewhere developers live, and let's see if we can get a cooperative project up and running.

And if you don't like RSS, Atom or RDF, invent an orthogonal format and we can work with that too. I know people have strong feelings about this stuff, not a problem.

PS: I asked Tim Bray to comment, and he responded. Sounds good. We've known each other for decades, going back to the early days of XML.

19:07

Valhalla's Things: Emergency Camisole [Planet Debian]

Posted on July 4, 2025
Tags: madeof:atoms, craft:sewing, FreeSoftWear

A camisole of white linen fabric; the sides have two vertical strips of filet cotton lace, about 5 cm wide, the top of the front is finished with another lace with triangular points and the straps are made with another insertion lace, about 2 cm wide.

And this is the time when one realizes that she only has one white camisole left. And it’s summer, so I’m wearing a lot of white shirts, and I always wear a white camisole under a white shirt (unless I’m wearing a full chemise).

Not a problem, I have a good pattern for a well fitting camisole that I’ve done multiple times, I don’t even need to take my measurements and draft things, I can get some white jersey from the stash and quickly make a few.

From the stash. Where I have a roll of white jersey and one of off-white jersey. It’s in the inventory. With the “position” field set to a place that no longer exists. uooops.

But I have some leftover lightweight (woven) linen fabric. Surely if I cut the pattern as is with 2 cm of allowance and then sew it with just 1 cm of allowance it will work even in a woven fabric, right?

Wrong.

I mean, it would have probably fit, but it was too tight to squeeze into, and would require adding maybe a button closure to the front. feasible, but not something I wanted.

But that’s nothing that can’t be solved with the Power of Insertion Lace, right?

One dig through the Lace Stash1 and some frantic zig-zag sewing later, I had a tube wide enough for me to squiggle in, with lace on the sides not because it was the easiest place for me to put it, but because it was the right place for it to preserve my modesty, of course.

Encouraged by this, I added a bit of lace to the front, for the look of it, and used some more insertion lace for the straps, instead of making them out of fabric.

And, it looks like it can work. I plan to wear it tonight, so that I can find out whether there is something that chafes or anything, but from a quick test it feels reasonable.

a detail of the side of the camisole, showing the full pattern of the filet lace (alternating Xs and Os), the narrow hem on the back (done with an hemming foot) and the fact that the finishing isn't very neat (but should be stable enough for long term use).

At bust level it’s now a bit too wide, and it gapes a bit under the arms, but I don’t think that it’s going to cause significant problems, and (other than everybody on the internet) nobody is going to see it, so it’s not a big deal.

I still have some linen, but I don’t think I’m going to make another one with the same pattern: maybe I’ll try to do something with a front opening, but I’ll see later on, also after I’ve been looking for the missing jersey in a few more potential places.

As for now, the number of white camisoles I have has doubled, and this is progress enough for today.


  1. with many thanks to my mother’s friend who gave me quite a bit of vintage cotton lace.↩︎

17:07

It’s the Nation’s Birthday [Whatever]

And we have a lot to think about.

— JS

17:00

Error'd: Better Nate Than Lever [The Daily WTF]

Happy Friday. For those of us in America, today is a political holiday. But let's avoid politics for the moment. Here's a few more wtfs.

"Error messages are hard," sums Ben Holzman , mock-replying "Your new puzzle games are fun, LinkedIn, but your error messages need a little work…"

0

 

Orin S. chooses wisely "These should behave like radio buttons, so… No?" I get his point, but I think the correct answer is "Yes, they are checkboxes".

1

 

Mark W. refreshes an occasionally seen issue. "Fair enough, Microsoft Office - I don't trust those guys either." Without more diagnostics it's hard to say what's going here but maybe some of you have seen this before.

2

 

ANONYMOVS chiseled out an email to us. "Maybe it really is Roman numerals? I never did find the tracking ID..."

3

 

And finally, Jonathan described this final entry as "String locationalization resource names showing," jibing that "Monday appears to be having a bad Monday." So they were.

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.

16:49

07/04/25 [Flipside]

Gonna be at Anime Midwest this weekend, in the artist alley! https://animemidwest.com/

Why doesn’t LVIF_INDENT work without an image list? [The Old New Thing]

The LVIF_INDENT property of the Win32 classic listview control lets you indent an item in report view. The units of indentation are the size of the image list. But that requires an image list. Why does it require an image list?

The indentation feature of the classic listview control was added for Internet Mail and News, a mail and newsreader program that came with Internet Explorer 3.¹ The indentation was used to represent message threading. Since the indentation was intended to represent reply depth, it was not unreasonable for the listview’s representation of the indentation to match the underlying data’s indentation. And since each item had an icon (representing read or unread), the width of the icon was a natural unit of indentation.

But what if you don’t want an image list?

The indentation demands an image list, but you can provide a 1 × 1 image list, and choose not to show any images. The space will still be reserved, so there will be a 1 pixel gap, but maybe this small glitch isn’t noticeable. The indentation would then be in units of pixels.

Not great, but it might be the best you can do.

¹ Internet Mail and News was subsequently rebranded as Outlook Express, a rebranding which created confusion and unmet expectations.

The post Why doesn’t <CODE>LVIF_<WBR>INDENT</CODE> work without an image list? appeared first on The Old New Thing.

15:00

Link [Scripting News]

Today is Independence Day in the US, so how about an Independence Day for the web. One simple way would be to hook RSS up to ActivityPub, turning Mastodon and Threads into a big feed reader. It could easily be done in software, it would just take money to keep it running. Not something I could attempt personally. But I would totally help with the software and design. It would open the door for lots of new apps that could communicate with users through a single simple API. I want to talk with people about this at WordCamp Canada in October.

Link [Scripting News]

How odd on Independence Day a law goes into effect that funds a secret police for the US. The goal is to flow people from inside the United States into concentration camps, and ostensibly deport them to other countries. It may turn out to be easier and less expensive to just gas them and burn the bodies right here in the USA. I listened to this morning's Daily podcast to hear how they summed up the bill. They focused on taxes and health care as most of the other news orgs have been doing. They were puzzled why the Repubs didn't seem to care if it hurt their electorate, but they didn't state the obvious answer. They don't care. Remember Occam's News. I guess they didn't want to say it out loud so they just telegraphed the question. It worked, message received.

14:21

[$] Python audio processing with pedalboard [LWN.net]

The pedalboard library for Python is aimed at audio processing of various sorts, from converting between formats to adding audio effects. The maintainer of pedalboard, Peter Sobot, gave a talk about audio in Python at PyCon US 2025, which was held in Pittsburgh, Pennsylvania in May. He started from the basics of digital audio and then moved into working with pedalboard. There were, as might be guessed, audio examples in the talk, along with some visual information; interested readers may want to view the YouTube video of the presentation.

Security updates for Friday [LWN.net]

Security updates have been issued by AlmaLinux (.NET 9.0, container-tools:rhel8, ghostscript, git-lfs, grafana-pcp, pandoc, perl-FCGI:0.78, ruby:2.5, ruby:3.3, tigervnc, and varnish:6), Debian (jpeg-xl and mediawiki), Fedora (darktable, guacamole-server, mingw-gdk-pixbuf, and yarnpkg), Oracle (gimp, kernel, libsoup, python-tornado, python3.12, and thunderbird), Slackware (php), SUSE (libgepub), and Ubuntu (libtpms, linux-aws-5.15, linux-intel-iot-realtime, and linux-bluefield).

12:56

Russell Coker: Function Keys [Planet Debian]

For at least 12 years laptops have been defaulting to not having the traditional PC 101 key keyboard function key functionality and instead have had other functions like controlling the volume and have had a key labelled Fn to toggle the functions. It’s been a BIOS option to control whether traditional function keys or controls for volume etc are the default and for at least 12 years I’ve configured all my laptops to have the traditional function keys as the default.

Recently I’ve been working in corporate IT and having exposure to many laptops with the default BIOS settings for those keys to change volume etc and no reasonable option for addressing it. This has made me reconsider the options for configuring these things.

Here’s a page listing the standard uses of function keys [1]. Here is a summary of the relevant part of that page:

  • F1 key launches help doesn’t seem to get much use. The main help option in practice is Google (I anticipate controversy about this and welcome comments) and all the software vendors are investigating LLM options for help which probably won’t involve F1.
  • F2 is for renaming files but doesn’t get much use. Probably most people who use graphical file managers use the right mouse button for it. I use it when sorting a selection of photos.
  • F3 is for launching a search (which is CTRL-F in most programs).
  • ALT-F4 is for closing a window which gets some use, although for me the windows I close are web browsers (via CTRL-W) and terminals (via CTRL-D).
  • F5 is for reloading a page which is used a lot in web browsers.
  • F6 moves the input focus to the URL field of a web browser.
  • F8 is for moving a file which in the degenerate case covers the rename functionality of F2.
  • F11 is for full-screen mode in browsers which is sometimes handy.

The keys F1, F3, F4, F7, F9, F10, and F12 don’t get much use for me and for the people I observe. The F2 and F8 keys aren’t useful in most programs, F6 is only really used in web browsers – but the web browser counts as “most programs” nowadays.

Here’s the description of Thinkpad Fn keys [2]. I use Thinkpads for fun and Dell laptops for work, so it would be nice if they both worked in similar ways but of course they don’t. Dell doesn’t document how their Fn keys are laid out, but the relevant bit is that F1 to F4 are the same as on Thinkpads which is convenient as they are the ones that are likely to be commonly used and needed in a hurry.

I have used the KDE settings on my Thinkpad to map the function F1 to F3 keys to the Fn equivalents which are F1 to mute-audio, F2 for vol-down, and F3 for vol-up to allow using them without holding down the Fn key while having other function keys such as F5 and F6 have their usual GUI functionality. Now I have to could train myself to use F8 in situations where I usually use F2, at least when using a laptop.

The only other Fn combinations I use are F5 and F6 for controlling screen brightness, but that’s not something I use much.

It’s annoying that the laptop manufacturers forced me to this. Having a Fn key to get extra functions and not need 101+ keys on a laptop size device is a reasonable design choice. But they could have done away with the PrintScreen key to make space for something else. Also for Thinkpads a touch pad is something that could obviously be removed to gain some extra space as the Trackpoint does all that’s needed in that regard.

10:35

Refocusing [Seth's Blog]

Freedom, liberty and independence are human rights.

But they depend on responsibility. Responsibility to others, to our future, to the community. Responsibility for our actions and our choices.

The only way to earn our independence is to keep the promises we’ve made. Can we become the present that the future will thank us for?

08:56

The Spoils Of War [Penny Arcade]

New Comic: The Spoils Of War

05:56

Girl Genius for Friday, July 04, 2025 [Girl Genius]

The Girl Genius comic for Friday, July 04, 2025 has been posted.

04:21

Sahil Dhiman: Secondary Authoritative Name Server Options for Self-Hosted Domains [Planet Debian]

In the past few months, I have moved authoritative name servers (NS) of two of my domains (sahilister.net and sahil.rocks) in house using PowerDNS. Subdomains of sahilister.net see roughly 320,000 hits/day across my IN and DE mirror nodes, so adding secondary name servers with good availability (in addition to my own) servers was one of my first priorities.

I explored the following options for my secondary NS, which also didn’t cost me anything:

1984 Hosting

Hurriance Electric

Afraid.org

Puck

NS-Global

Asking friends

Two of my friends and fellow mirror hosts have their own authoritative name server setup, Shrirang (ie albony) and Luke. Shirang gave me another POP in IN and through Luke (who does have an insane amount of in-house NS, see dig ns jing.rocks +short), I added a JP POP.

If we know each other, I would be glad to host a secondary NS for you in (IN and/or DE locations).

Some notes

  • Adding a third-party secondary is putting trust that the third party would serve your zone right.

  • Hurricane Electric and 1984 hosting provide multiple NS. One can use some or all of them. Ideally, you can get away with just using your own with full set from any of these two. Play around with adding and removing secondaries, which gives you the best results. . Using everyone is anyhow overkill, unless you have specific reasons for it.

  • Moving NS in-house isn’t that hard. Though, be prepared to get it wrong a few times (and some more). I have already faced partial outages because:

    • Recursive resolvers (RR) in the wild behave in a weird way and cache the wrong NS response for longer time than in TTL.
    • NS expiry took more than time. 2 out of 3 of my Netim’s NS (my domain registrar) had stopped serving my domain, while RRs in the wild hadn’t picked up my new in-house NS. I couldn’t really do anything about it, though.
    • Dot is pretty important at the end.
    • With HE.net, I forgot to delegate my domain on their panel and just added in my NS set, thinking I’ve already done so (which I did but for another domain), leading to a lame server situation.
  • In terms of serving traffic, there’s no distinction between primary and secondary NS. RR don’t really care who they’re asking the query to. So one can have hidden primary too.

  • I initially thought of adding periodic RIPE Atlas measurements from the global set but thought against it as I already host a termux mirror, which brings in thousands of queries from around the world leading to a diverse set of RRs querying my domain already.

  • In most cases, query resolution time would increase with out of zone NS servers (which most likely would be in external secondary). 1 query vs. 2 queries. Pay close attention to ADDITIONAL SECTION Shrirang’s case followed by mine:

$ dig ns albony.in

; <<>> DiG 9.18.36 <<>> ns albony.in
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60525
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;albony.in.                     IN      NS

;; ANSWER SECTION:
albony.in.              1049    IN      NS      ns3.albony.in.
albony.in.              1049    IN      NS      ns4.albony.in.
albony.in.              1049    IN      NS      ns2.albony.in.
albony.in.              1049    IN      NS      ns1.albony.in.

;; ADDITIONAL SECTION:
ns3.albony.in.          1049    IN      AAAA    2a14:3f87:f002:7::a
ns1.albony.in.          1049    IN      A       82.180.145.196
ns2.albony.in.          1049    IN      AAAA    2403:44c0:1:4::2
ns4.albony.in.          1049    IN      A       45.64.190.62
ns2.albony.in.          1049    IN      A       103.77.111.150
ns1.albony.in.          1049    IN      AAAA    2400:d321:2191:8363::1
ns3.albony.in.          1049    IN      A       45.90.187.14
ns4.albony.in.          1049    IN      AAAA    2402:c4c0:1:10::2

;; Query time: 29 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Jul 04 07:57:01 IST 2025
;; MSG SIZE  rcvd: 286

vs mine

$ dig ns sahil.rocks

; <<>> DiG 9.18.36 <<>> ns sahil.rocks
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64497
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;sahil.rocks.                   IN      NS

;; ANSWER SECTION:
sahil.rocks.            6385    IN      NS      ns5.he.net.
sahil.rocks.            6385    IN      NS      puck.nether.net.
sahil.rocks.            6385    IN      NS      colin.sahilister.net.
sahil.rocks.            6385    IN      NS      marvin.sahilister.net.
sahil.rocks.            6385    IN      NS      ns2.afraid.org.
sahil.rocks.            6385    IN      NS      ns4.he.net.
sahil.rocks.            6385    IN      NS      ns2.albony.in.
sahil.rocks.            6385    IN      NS      ns3.jing.rocks.
sahil.rocks.            6385    IN      NS      ns0.1984.is.
sahil.rocks.            6385    IN      NS      ns1.1984.is.
sahil.rocks.            6385    IN      NS      ns-global.kjsl.com.

;; Query time: 24 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Jul 04 07:57:20 IST 2025
;; MSG SIZE  rcvd: 313

  • Theoretically speaking, a small increase/decrease in resolution would occur based on the chosen TLD and the popularity of the TLD in query originators area (already cached vs. fresh recursion).
  • One can get away with having only 3 NS (or be like Google and have 4 anycast NS or like Amazon and have 8 or like Verisign and make it 13 :P).
  • Nowhere it’s written, your NS needs not to be called dns* or ns1, ns2 etc. Get creative with naming NS; be deceptive with the naming :D.
  • A good understanding of RR behavior can help engineer a good authoritative NS system.

Further reading

02:42

A Simple Resolution [QC RSS]

Easy poeasy

01:14

Vote for Alexis Mercedes Rinck for City Council Position 8 [The Stranger]

This election has the chance to reshape our city council into a functioning governing body, and we want to see what Rinck can do when she’s not swimming upstream
by Stranger Election Control Board

When we endorsed Alexis Mercedes Rinck in 2024, we had a lot to say about what she wouldn’t do: She wouldn’t stoop to a lower minimum wage, she wouldn’t make it easier for landlords to evict you, she wouldn’t reduce oversight on cops, she wouldn’t help corporations hoard more wealth.

That was because we knew that if she was elected, she (and at the time, Tammy Morales before she was bullied out of City Hall) would be a progressive in a sea of conservatism. As we hoped, she pushed back: She voted against giving SPD more access to “less lethal” weapons, and when her colleagues approved additional surveillance from law enforcement, she opposed it.

But more important than what she didn’t do is what she did. Despite being on council with people allergic to helping the city, Rinck found other ways to show up. She supported counterprotesters at a Christian Supremacist group in Cal Anderson, and was instrumental in convincing the city to deescalate the situation. She spoke out at the committee hearing when Council Member Cathy Moore tried to defang our city’s ethics code, even though she wasn’t on that committee (and even though Council President Sara Nelson tried desperately to shut her up). Rinck knows that being on city council gives her a voice, and she’s shown us over and over again that she’s willing to use it for ordinary people.

 

She’s also clearly the voice we need to start fixing our ass-backward revenue streams in Seattle. Just weeks after our endorsement interview, she presented a collaborative effort with the mayor to reform our tax code to reduce the taxes that small businesses are paying, shift the burden to big business, and raise an extra $90 million in the process. Now that’s what we call progressive revenue!

Rinck doesn’t have much competition in this race. Her standout opponent is Rachael Savage, who quite frankly fascinates us, even if we had to sage the office after she left. A Republican with chunky jewelry and overlined lipstick who started the election season running for mayor, Savage switched to a City Council race just before the filing deadline. She owns a new-age shop on Capitol Hill, runs a meditation program, and believes that her experience getting sober justifies her argument that people who are mentally ill or dealing with “late-stage” addiction should be shipped to facilities for Shiny Happy People outside of the city. Oh, and she told us words are never violent and hate speech doesn’t exist.

This election has the chance to reshape our city council into a functioning governing body (would we even recognize it?) and we want to see what Rinck can do when she’s not swimming upstream. Vote Rinck.

Thursday, 03 July

22:56

Why Is Bateau (Temporarily) Closed, Though? [The Stranger]

Renee Erickson's restaurant group says they're undergoing a planned 'reimagining.' But their newly formed union thinks it's a fish story
by Meg van Huygen

Thursday, June 19, was the last night of service for the foreseeable future at Capitol Hill steakhouse Bateau and its twin cocktail lounge Boat Bar. After a shift spent alternately serving customers and throwing away food and projects in process, the crew shut the restaurant down early, then sat down to eat together. For their swan-song meal, they arranged the flowers, cooked up some leftover steaks, and made good use of the open wine bottles. The group was joined by former crew members, regulars, and other friends who stopped in to pay their respects, and the tears flowed alongside the wine. 

According to staff members at the party, they were joined by two corporate employees from Sea Creatures, the ocean-themed restaurant group founded by celebrated Seattle chef Renee Erickson that owns Bateau and Boat Bar, dining with the people they’d just laid off. They didn’t help cook or clean, the staff said—just ate the food, but not before telling workers to make sure they clocked out before dinner started. There was no word from or sign of Erickson.

The following day, Bateau and Boat Bar’s Instagram accounts were loaded with photos and videos of the staff celebrating their last supper. Comments on those posts have been turned off.

Officially, the news had broken on June 5: A press release from Sea Creatures announced that Bateau and Boat Bar would be closing temporarily, effective June 19. Alongside the temporary closures, it read, two of the four General Porpoise bakery/coffee shops would close permanently. 

The plan is for Bateau and Boat Bar to reopen in three to six months, whereupon the bar will be absorbed into Bateau. The other two General Porpoise locations in Pioneer Square and the Amazon Spheres will remain open. 

“Over the past several months,” the press release read, “Sea Creatures has been thoughtfully considering updates to the concepts behind Bateau and Boat Bar…. With key team members now departing to pursue new opportunities, this natural transition point provides the right moment to move forward with these long-considered changes. … Sea Creatures looks forward to welcoming guests and staff back to a reimagined Bateau and Boat Bar later this year.” 

But in the way that there are no secrets on an island, scuttlebutt about the impending closures had already started making waves throughout Seattle’s professionally consanguineous restaurant industry. Two days before Sea Creatures dropped the press release, the city’s restaurants and social media accounts wondered if the impending closures had something to do with the company’s recently formed union. Several Sea Creatures employees, as well as union officers—themselves former employees of The Walrus and the Carpenter, Sea Creatures’ flagship restaurant—had a similar saga to tell in person, and it all starts with a service charge.

Nicole Hardina is on the advisory board of the Sea Creatures union (the wonderfully named United Creatures of the Sea), which filed a petition to unionize in February 2025. She’s also a former front of house lead, manager, and bartender at The Walrus and the Carpenter and its attached Barnacle Bar. Hardina describes an all-hands meeting in December 2024, with the staff from most of Sea Creatures’ fleet.  Workers at The Walrus and the Carpenter and Barnacle Bar, Bateau and Boat Bar, The Whale Wins, Wilmott’s Ghost, Deep Dive, Westward, and Lioness were told the restaurant company “had fallen on hard times.”

“They’re losing money year over year, and are going to have to make some changes starting January 1,” Hardina told The Stranger

“The change,” she says, “was that we were no longer going to be a tip-pooled company. They were going to be instituting a service charge—and taking 54.5 percent of that service charge for the house, leaving 45.5 percent of that service charge for workers to split among themselves. This amounted to a pretty tremendous pay cut, which we realized in pretty short order during the meeting.

“This was right before the holidays, so people had already booked travel and bought gifts. This expensive time of year, we were already knee-deep in. They told us they’d been considering this for about a year. They had not asked for any input from workers.” 

Jeff Kelley, the union’s executive officer and a former server/bartender at the Walrus and the Barnacle, chimes in. “They framed it as: Because they were not making enough money in the past couple years, their aim was to profit 22 percent in 2025. The first 10 percent was gonna be from raising menu prices. The second 12 percent of that 22 percent was gonna be the portion they were taking out of the service charge.”

Hardina, Kelley, and Ford Nickel, the union’s secretary–treasurer and a former server at Walrus, all say management acknowledged that workers could likely make more money somewhere else. They said they were sorry that the new service charge and the end of pooled tips would impact the workers negatively, and they understand if folks want to quit.  

Hardina says, “Worker response was ‘This feels like an emergency. We’re being told, “Accept or leave.”’ And we decided that there was a third path, which for us was to organize. So we spent our winter holidays doing just that.”

Nickel acknowledges that thanks to the end of the tip credit in our city's minimum wage, there was a significant wage increase on January 1, raising all front-of-house hourly employees of Sea Creatures restaurants from $20.76 to $25 an hour, and that the service charge is ostensibly tied to that extra cost. Regardless of the wage bump, though, he says that the switch-out of a pooled tip system for a service charge has left employees in dire straits. 

“It’s effectively like a five- or six-dollar reduction in pay,” he says. “But as soon as the summer rolls around, people are looking at 10 to 15 dollars [less] an hour. They’re looking at 150 dollars a shift.” 

None of the three union members who we spoke to for this story are presently employed by Sea Creatures Group, although they do still work for the independent United Creatures of the Sea union. They aren’t paid for their union jobs, as Sea Creatures employees are not charged union dues.

Even though he doesn’t work for Sea Creatures anymore, Nickel credits the service charge and the workers’ resultant reduced wages as the reason for the union’s existence. Kelley points out that they could have just quit their jobs and moved on, rather than sticking to the union after they left Walrus/Barnacle Bar.

“The options we were given were to just accept the changes that they put on us unilaterally, or to quit,” Kelley says. If they had quit, “not only are you kind of accepting the fact that you have no power over the situation, but you’re also kind of being complicit in the fact that somebody else is gonna take that job because they need it.” 

 “In an industry that is more or less transient, exploitation becomes very easy,” Kelley says. “Because even though we might leave in a huff, we might be angry about it, we might tell all our friends, ‘Hey, screw this place,’ the place still just gets to operate whatever way they want, because we just go get another job and forget about it a year from now. So, we’re refusing to do that.”

On June 3, two days before the public announcement, Sea Creatures leadership told employees of Bateau and Boat Bar that the conjoined resto-bar would close temporarily on June 19, mentioning only a plan to reopen in three and six months—but no guarantee that it would. 

Several former and current employees say that, of those who will lose their jobs, only managers were offered to be relocated to other Sea Creatures restaurants. Some allege they’re being urged to quit and find other jobs. It was also suggested by several workers that Sea Creatures may prefer to replace them with fresh new employees—people who, as Kelley suggested, don’t remember a time at these jobs when 100 percent of the pooled tips went directly to workers’ pockets, rather than just 45.5 percent of a service charge.  

While the union officers spoke on the subject freely and didn’t mind having their names known, some current employees went on the record willingly but requested to remain anonymous. Others spoke strictly off the record. One claimed that talking to the media goes against company policy at Sea Creatures. Because my interviews took place before the closures, several workers mentioned a fear of being fired as retaliation, which could cost them their unemployment eligibility. 

In his email response, Sea Creatures co-owner Jeremy Price cites different figures than the union does—most glaringly in the notion that 45.5 percent of the service charge goes to the team and 54.5 percent goes to the house. The way he couched it, 100 percent of the service charge is retained by the restaurant and used to pay operating expenses—including labor. 

“Of that total,” he writes, “50 percent goes directly to hourly staff, front and back of house, as additional compensation on top of their base hourly wage. For example, servers at Bateau and Boat Bar earned between $45.98 and $52.36/hour on their most recent paychecks: $25 from their base wage, plus another ~$20–$27/hour from the service charge distribution. These additional hourly earnings are not overtime—they [are] additional earnings drawn from the service charge pool and are paid to all hourly team members.”

The other half of the service charge, Price says, is used to cover core expenses, including but not limited to Sea Creatures’ $25-per-hour base wage; health, vision, and dental benefits for employees working 25+ hours per week; and a 401(k) with employer match for employees working 20+ hours per week.

On June 5, hours before the Sea Creatures press release went out, Price had this to say via email, after I’d written to the general email address at Sea Creatures to ask if the restaurant closures had anything to do with the union.

“The team at Bateau and Boat Bar voted to unionize in early February of this year,” Price wrote. “We fully support their right to do so and have had no issue with that decision. Bateau and Boat Bar will continue to be union restaurants when they reopen.”

“Sales at both restaurants have been steadily declining since 2024,” he went on, “and we’ve been actively discussing ways to reinvigorate the concepts for some time—considering changes to the menu, service style, and dining room design.

“Less than two weeks ago, Bateau and Boat Bar’s longtime chef gave notice… Just two days later, Bateau and Boat Bar's general manager also let us know that she was accepting a promotion to Director of Operations with another restaurant group, also after a decade with us. …The departure of these key leaders created a natural inflection point for us and for the restaurants. We made the decision to temporarily close both Bateau and Boat Bar for a planned refresh…. We anticipate a closure of 3–6 months while we focus on making updates that will position both restaurants for long-term success.

All current staff will be recalled when we reopen.”

The union isn’t sure about that last bit. On June 5, Nickel asserted that The Walrus and the Carpenter was hiring, but he and Kelley say there’s been no conversation between workers and Sea Creatures about offering those available jobs to anybody at Bateau who’s slated to be displaced—or about moving qualified servers from Bateau to any other Sea Creatures restaurant.

In the same breath, Nickel raises yet another concern around the hiatus: the status of the union itself. “Creating a situation where [Bateau and Boat Bar are] gonna have an entirely new set of employees makes it very easy for Sea Creatures to decertify the union’s representation of that bargaining unit. Especially if they extend it to six months, which already gets them halfway to a place where they can file for a decertification petition after suppressing the deadline.“

Mitigating the word temporarily is, of course, the current economic climate in Seattle—the planet’s 8th most expensive city to live in, per CNBC. It’s hard to fathom that the average Seattleite could afford to take three to six months off from work, unpaid, while banking on the misty hope of getting their job back at an unspecified date. 

“I would say it behooves almost everyone who’s working at Bateau to just get another job immediately,” Kelley says. “Closing for three to six months means effectively not going back to your jobs for three to six months, unless you can get unemployment for that amount of time. There’s no end game besides getting another job.”

There are more problems lurking beneath the surface of that service charge too, Nickel, Hardina, and Kelley agree. One is that they think the language used to explain it to guests is pretty murky.

On the menus, Nickel says, “Guests are informed that 100 percent of the 22 percent service charge is retained by the house, with a link leading to more information. They don’t explicitly say that that 45 percent [sic] is directly payable to the employees. They’ll say instead that they use the service charge for all of these benefits.” 

Hardina dials up The Walrus and the Carpenter’s website on her phone. “It says at the very bottom of the menu, in a very small font: ‘The Walrus and the Carpenter and Barnacle Bar have added a 22 percent service charge to all dine-in checks. 100 percent of this service charge is retained by The Walrus and the Carpenter and Barnacle Bar. Gratuities are not expected, but any that you choose to leave are shared 100 percent among our hourly employees.’”

“So. If you stop right there,” Kelley says, “there’s a discrepancy. There’s The Walrus and the Carpenter, which 100 percent of it is going to, but when you add an added gratuity, that’s going to the hourly employees. So the inference there, that they hope people don’t understand, is that those are two different entities.” 

Another red herring I see, whether intentional or not, lies in telling guests that a gratuity isn’t expected, which may lead them to think they’ve already tipped the crew via the service charge. 

Both the service charge as well as the way it’s described to guests, Hardina says, has created a boatload of confusion for both guests and workers. “And an ethical dilemma for workers,” she adds, “who now must drop a check dozens of times a night that is a lot more than it used to be and that contains language that’s unclear.”

Nickel adds, “We think [Sea Creatures may have chosen] 22 percent because if they simply slapped a 12 percent service charge on there, people would view it the same way as they would any restaurant that has, like, a 5 percent service charge. They see it just as a money grab for the company, in the same way hotels have resort fees and ticket vendors have convenience fees. So they chose a number that, we believe, would lead guests to think it’s in place of a tip.” 

Meanwhile, Price’s tack—that the temporary Bateau/Boat Bar closure is due to the departure of two key team members, chef Taylor Thornhill and general manager Jamie Irene—has been believed by some at the company but not others. Irene herself seems to think it holds water. 

Formerly Sea Creatures’ director of hospitality, Irene says that the day after Bateau chef Taylor Thornhill tendered his resignation, she was contacted about “a job that was a better job for me.” She’ll be the new director of operations for Sugar Shack Unlimited, Marcus Lalario’s restaurant group, overseeing Ciudad, Mezzanotte, Darkalino’s, and Fat’s Chicken & Waffles. After accepting the role, Irene resigned from Bateau two days after Thornhill had. 

“And then I think [Sea Creatures] decided to do this in direct response to [Thornhill] and I leaving. I mean, for sure, they have been in conversation with us about maybe doing something to reconceptualize Bateau. They asked us if we wanted to be a part of that and gave us some time to think about it. And they just decided to do it. I actually hadn’t decided—this [new job] came to me out of nowhere. And it just happened to come when Taylor was leaving. So, it was just timing.”

When asked whether the union’s pushback on the service charge issues has spawned Sea Creatures’ decision to close the four restaurants, Irene says, “I think that’s a matter of opinion.”

Other Sea Creatures employees certainly have opinions as well. One worker who wished to remain anonymous says the closures feel like a two-birds-one-stone situation, alleging that Thornhill and Irene had tried for years to buy Bateau and Boat Bar. When the deal fell through, they say, that’s what triggered the closure, not the pair’s resignations. 

“If Thornhill and Irene bought the restaurant,” they say, “the company would have easily offloaded the union and loans they have out on the restaurant. If [Bateau and Boat Bar] didn’t sell, the plan was to close and remodel, regardless if Thornhill and Irene stayed or not.” (According to the union, Bateau carries a debt of around $2 million. Price confirmed that the company had been operating with debt, but did not confirm the amount.) 

“The closure of three to six months puts all us hourly employees in a difficult spot,” they continue, “especially those with health insurance needs. We can [either] try to survive six months without income or find new jobs.”

They point to the union as a factor behind the closures, though, saying that, when the workers did file a petition to unionize, “the company spent thousands of dollars to fly in a ‘union educator’ from New York who ended up being a union buster trying to dissuade us from organizing.” (Price says that they hired a "neutral 3rd party person to speak with them on the pros and cons of unionizing.") 

Nickel says that companies facing unionization often use a similar strategy. “And one of the first things they do is bring in an expert on unions,” he says. “And one of their first points was that, y’know, ‘It’s gonna cost you money. Dues are a thing. You have to rent offices and hire lawyers and pay full-time salaries.’ And that’s just not the case.”

Another employee, who asked to remain anonymous because they were concerned about possible retribution from Sea Creatures, implied that Bateau and Boat Bar have long been the island of misfit toys in the Sea Creatures archipelago. They describe a tenured crew who previously liked their jobs but increasingly felt that the company has jumped the shark recently, and a contentious relationship that’s been bubbling for years.

“I don’t know if anyone’s told you about the strike that happened in 2022,” they said. “There was a dispute over alleged overpayment, and the staff and the company didn’t agree on it, and so the staff went on strike, and the company shut the restaurant down.” Bateau was closed for 11 days before the dispute was resolved. 

After that, they say, Sea Creatures had “a distaste” for the team at Bateau, and that workers suspect Sea Creatures is using Irene and Taylor’s resignations as an excuse to shut the restaurant down and replace the staff. 

The team’s not pleased about the service charge either, they say. “This last December, exactly one week before Christmas, they told us they were gonna put in a service charge, take 55% [sic] of it, and their line is: ‘The reason we’re doing that is to offer benefits.’” But workers were already receiving benefits before the service charge, they say, and now they’re actually getting fewer benefits. “So their line about how it’s better [for workers], to offer us benefits in exchange for keeping over half of the service charge, is just, like, patently false.”

Most guests don’t tip on top of the service charge because they think the service charge is the tip. “As anyone would. If you’re at a full-service restaurant, you think the service charge is going to the people serving you.“

It was choppy seas over the last two weeks for Bateau and Boat Bar’s staff, they added. “It was wild, watching guests go from casually inquisitive on our next steps to boiling with rage when they found out a little more of the story. Most people assumed we were getting places at other Sea Creatures spots.” 

The dishwashers reportedly still haven’t found other jobs, they say, while the company is emailing the former staff various ads for cooks, dishwashers, servers, and managers at Sea Creatures businesses. “[Management] sent an email letting us know we could apply to other places—one of the cooks did and never heard back from the company.” 

Lastly, Anonymous Worker No. 2 says, their pro-union sentiment is “100% shared by every single staff member” at Bateau and Boat Bar. “It was in the Seattle Times that 13 out of 22 people voted for the union. But only one person voted against it. That day, I think people were out of town, and one got the time wrong, so some didn’t vote. But there was only one no vote. And later, General Porpoise, all of the doughnut shops and the [commissary] bakery, they all voted 100% yes to join the union. Happy employees don’t unionize.”

At the end of the day, it’s not possible to prove Sea Creatures' motive behind shuttering these restaurants, however long they’re closed. Anyone who wasn’t in the room for the conversation can only base their opinion on the press release, the personal takes of workers and union members, and, if they like, the whispers on the tide. 

What's manifest, though, is that a titanic gulf in narratives exists between the company and some of its employees. Perhaps germanely, Sea Creatures does have a reputation for its turbulent working environments. Price recommended that I chat with some of their happy workers, rather than “a small minority of folks whothat are disgruntled.” But gruntled or otherwise, current employees were generally reluctant to speak on the record. Of course, happy workers don’t usually want to talk to the media, but they also don't unionize, aforesaid. 

As well, Seattleites have a long memory for a stank reputation—even when the source of the stank might be water under the bridge today. Which is to say that union’s only a few months old, so maybe we give it time to do what unions do. If United Creatures of the Sea is able to navigate a satisfactory resolution with Sea Creatures Group and map out some future boundaries, it could be smooth sailing for workers going forward. 

In the meantime, a bunch of highly skilled industry folks just got shitcanned, through no fault of their own, so let’s hope that Seattle’s tight-knit pod of hospitality workers can help these restaurant refugees swim to shore. Or, if they want to wait out the closures, help keep them afloat with gigs in the meantime. As this city seems to well know, a rising tide lifts all boats.

21:49

Richards: Introducing tmux-rs [LWN.net]

Collin Richards has announced version 0.0.1 of tmux-rs, a port of the tmux terminal multiplexer to Rust.

For the [past] 6 months or so I've been quietly porting tmux from C to Rust. I've recently reached a big milestone: the code base is now 100% (unsafe) Rust. I'd like to share the process of porting the original codebase from ~67,000 lines of C code to ~81,000 lines of Rust (excluding comments and empty lines). You might be asking: why did you rewrite tmux in Rust? And yeah, I don't really have a good reason. It's a hobby project. Like gardening, but with more segfaults.

Richards says that the next goal for the project is to convert it to safe Rust. It is currently "not very difficult to get it to crash", but he wanted to share the project with other Rust fans now. The project is available on GitHub.

21:21

The Irreverent Genius of Khampaeng [The Stranger]

Ananas isn’t about pineapple, or even pizza—it’s about showing that sometimes the quickest way past a dumb fight is a good meal. by Michael Wong

What’s more personal than how you like your pizza? In a city like Seattle, where opinions can end friendships, what you think about pizza could matter nearly as much as whom you voted for.

Which makes it all the more interesting that one of Seattle’s best pizza spots is named after the world’s most divisive pizza topping: Ananas, or “pineapple” in Italian (and over 40 other languages). At the helm is Khampaeng Panyathong, the Laotian chef whose claim to fame isn’t a viral noodle pull or reimagined laap, but instead, a cheeseburger—one so good it landed him on the cover of the New York Times food section. It’s the kind of culinary punchline you’d expect from a city that loves categories but rarely knows what to do with someone who sidesteps them.

But through the ironies, nothing about Khampaeng’s ascent has been accidental. This is a calculated dude, after all, one who knows as much about self-defense as he does fermentation, and that’s a fucking lot. He’s a chef who takes a certain pleasure in surprising people, avoiding the “authenticity” traps, letting the food speak for itself.

And to me, he very well could be Seattle’s most interesting chef, or at least one of the few who seem to have it all figured out.

Khampaeng Panyathong in the kitchen at Ananas. CHRISTIAN PARROCO The Unexpected Burger King

Khampaeng has never moved like a chef who wanted notoriety, or a newspaper story, for that matter. In person, he’s a kind and soft-spoken guy. A cross between Jet Tila and Jason Bourne. Whenever I get to see him, he always seems to be wearing three specific garments: a pair of cargo shorts, a blue trucker hat with three wolves backdropped by the American flag, and a fishing vest with pockets containing items you’d find at the same place he bought the hat. 

Most of Seattle’s restaurant scene is built on the backs of chefs like Khampaeng—people who know how to keep the lights on, who know what it takes to survive in the restaurant game, whether their names are on the lease or not. He spent more than a decade as the man behind the curtain, opening a dozen restaurants for other people while keeping even more from falling apart. By the end, it was clear to Khampaeng that working to build others’ dreams was no longer his. He just wanted to be his own boss. 

When he finally decided to open his first shop, he did so with the well-scoped speed that would characterize every subsequent opening of his. Within eight weeks of seeing a place he thought he could work with, he swiftly developed a concept, signed the lease, and opened Taurus Ox—a spot serving Laotian food in an old Thai restaurant. He knew people missing the Thai spot may be open to Lao food and, by that same token, knew they would also be confused by something like a burger joint, which was also within his range. 

And yet, it was a burger that put the Laotian chef on the map. The Lao Burger was born after sizing up the salad prep station at Taurus Ox with a goal to make a gateway dish—a tactical move driven by efficiency as much as his audience. What he created was so popular it demanded a spinoff. So when Taurus Ox eventually moved to a bigger location, Ox Burger took its place. Probably inevitable, definitely ironic.

But all this expansion wasn’t enough for Khampaeng. In the midst, he also signed the lease for a pizza joint that would become Ananas Pizzeria, welcomed his first baby, and quit drinking cold turkey (as a chef!). A lifetime packed into two years. “It was the hardest time of my life,” he tells me.

Surviving that stretch would be enough for anyone. For Khampaeng, it was another opportunity to surprise himself.

The pineapple on Ananas Pizza’s namesake pie is sliced so thin it almost melts. CHRISTIAN PARROCO Eating in Enemy Territory

At Ananas, the argument about what does or doesn’t belong on pizza is part of the fun. After all, naming a pizza spot after pineapples is akin to naming your steakhouse Well Done. If you come here with prejudice for pineapple, or anything really, you won’t be indulged. “If you don’t like pineapple and you’re eating at Ananas, remember you’re in enemy territory,” Khampaeng says with a straight face. Out front, a wooden pineapple marks the door. Inside, the century-old building details peek through via ornate moldings. The space is anchored by a bar with a handful of two- and four-tops scattered about, lit up with red and purple bulbs and decorated sporadically with antlers, Japanese masks, and cheeky vintage cartoons. Like Red Robin, but somehow with even less reason. 

The menu is concise but mighty, with a handful of pies that all use hand-prepped, premium ingredients, plus salads and “pizza sandwiches” (think cold-cut ingredients in a fresh, folded pizza crust) at lunch. The namesake Ananas Pizza—one of only two pies on the menu with pineapple, in case you were nervous—is made with a 72-hour sourdough crust and fired in a 550-degree oven, with pineapple sliced so thin it almost melts, pickled jalapeños that shake hands with togarashi for spice, salt from the smoked ham and the grated Grana Padano cheese, and a comforting red sauce that has its own point of view. You can taste the technique, the inspiration, and the refusal to cut corners, even if it means having some of the most intensive prep of any pizza spot in the city. The same way you likely prefer a boba that isn’t made from a powder, Khampaeng likes a pizza with ingredients that don’t come from bags. 

The first time I visited Ananas, I arrived before opening. By the time I left, the place had woken all the way up, teeming with different demographics and energies: solo bicyclists sitting next to construction workers rubbing shoulders with gossiping friends, elderly women claiming their usual patio spots with massive pitchers of beer. Nobody seemed too concerned with the “rules” or the world, just about getting another slice before the next wave rolled in.

“The secret ingredient is giving a shit,” Khampaeng tells me. “If you want to do something special, if you want to be proud of it, you gotta care. You gotta do it the hard way.” 

If you ask me, naming a pizza place after a pineapple checks the “hard way” box. But that’s precisely the joke—naming your shop Ananas and giving pineapple a seat at the table turns “enemy territory” into a place to find common ground. In Seattle, where we make it our job to challenge the lines people draw to divide us, Khampaeng understood the assignment. “Who decides what’s right and what’s wrong? For pizza, but for anything?” he muses. “The lines between right and wrong, hate and disgust, are very thin.” And nowhere in the pizza world are those lines more sharp than with pineapple as a topping. Haters say it’s not authentic, that it doesn’t belong, and as a cohort, they’re very vocal about it. Disgust, it turns out, can bring people together just as fast as delight.

“Ketchup on hot dogs is like that, too,” he says. “People who hate on pineapple or ketchup have so much to say, but those that like it, don’t. Replace ‘pineapple’ with ‘race,’ with anything.” 

At Ananas, you’re invited to have a good time, but also be ready to possibly change your mind. That’s normal fare for a museum, maybe, but rare for a restaurant. But that’s why Ananas works, why any Khampaeng spot works. The food is technical and deliberate, but the spirit is easy and welcoming. Irreverence as an icebreaker, execution as a deal-sealer. Ananas isn’t about pineapple, or even pizza, not really. Instead, it’s about showing that sometimes the quickest way past a dumb fight is a good meal. Pizza for all, pineapple doubly so.

What Belongs

Seattle will keep arguing about what’s real, what’s right, and who gets to call something theirs. Khampaeng is not here to debate—he and his team are too busy doing it the hard way, putting care into every thom khem at Taurus Ox, every Lao Burger at Ox Burger, and every slice at Ananas. And in the process, he’s adding room at the table for whoever wants in—making space, not noise.

19:49

She Hit Me (and It Felt Like Community) [The Stranger]

Seattle Martial Arts Tournament Gives Trans Fighters Rare Opportunity to Compete
by Vivian McCall

Justin stepped into the blue corner, Sarah R stepped into the red. The reedy cry of the pai chawa, a traditional Thai instrument, croaked from the speakers. 

Then, with the high metallic clang of a bell, they pounced. And jabbed and swung their legs into high kicks. The audience cheered with each hit. It gasped at the near misses. 

Part of the drama—and the excitement—of the fight was that in any other space aside from this ring at Ballard Jiu Jitsu, these fighters aren’t even allowed to compete. The thrill of the fight was twofold: The exhilaration of hitting and being hit and the ability to actually, finally fight. 

Queer Fight Night runs one of the few martial arts tournaments in the US where trans people can easily compete. (Outside of these occasional tournaments, Queer Fight Night teaches monthly self-defense classes for queer and trans people, where I was punched in the head about one hundred times—I’d recommend it). The March tournament was the third and the biggest, and the next one, over Labor Day weekend, is just two months away. If someone is willing to compete against anyone of any gender, they’re welcome.

With another high “ding” of the bell, the fight ended. Justin and Sarah R, both sweating and marked with red gloveprints and footprints, hugged. The audience, which was made of a couple hundred queer and trans people, roared. 

Welcome to the Seattle Queer & Trans Martial Arts Tournament. 

In a world eager to ban trans athletes on the unproven basis of “biological advantage,” Queer Fight Night offers an opportunity for fun, competition, spilling some communal blood via friendly aggression, and cutting their knuckles on what was, for many of the fighters, their very first time in the ring. The March event was only the third iteration of the event that originally started as a birthday party. It drew over 100 eager fighters. The next fight night over Labor Day weekend promises to be even bigger. 

A few hours before the first fight, about 100 people in folding chairs nodded along to the tournament rules. They were fighters, lovers and friends and family and they’d come from all over the country and as far as Europe. Tournament organizer Gwen Roote stood by the door. Her co-organizer read the rules from a sheet of paper: No spinning backfists. Don’t hit the  spine or head. Groin protection wasn’t a rule, but by all means, protect the bits. Dozens of hands shot up when they asked for questions.

Roote, who offered to braid the hair of anyone who asked, held the first queer and trans tournament to celebrate her birthday. She had only competed a little before she transitioned, but missed it. It was fun, and she had trouble finding a space. Even when she is willing to compete against cis men, they’re not always willing to compete with her. She says other tournaments have left the final say to the other fighters. Another tournament said she could totally compete, but only if she wrestled bare-chested. (It goes without saying why a woman does not want to wrestle with men bare-chested.) 

Queer Fight Night doesn’t put people in that position. Everyone is welcome to compete—but only as long as they’re willing to compete with anyone at their skill level. And those skill levels, and reasons for coming, were all over the place.

Alex, a boxer from Seattle, said they’d only started training last winter to burn off pent-up energy. Aurora, who doesn’t use a last name, but is willing to sell the open slot to interested sponsors, says she wants to be a superhero for trans people. In her matching blue shorts and sports bra, she even looked the part. Katie Christensen came from Cedar Rapids, Iowa. At 43, she knew she’d never be a world champion. But she could at least show the world that trans people belonged in the ring, even as their states were pushing them out. As of Tuesday, Iowa’s civil rights protections no longer include gender identity, and trans people born in the state can’t change the sex on their birth certificate. Christensen tried to get a all-queer boxing class going at home, but people were too scared to go, she says.

"That's why I'm here, doing something like this," she says. (Later, a swift right hook took Christensen down in the first round.) 

Also in the crowd was Alana McLaughlin, a world-famous fighter and one of only two transgender women to compete in a professional MMA match. She was on the night’s title card, and lost to Abigail Austin, aka Abby X, another trans woman who volunteers for Queer Fight Night and runs Seattle's Red Panda Boxing, a trans-inclusive Muay Thai gym. (“Red Panda” is a bit of a misnomer: The gym’s mascot is a pomeranian, who sat in Austin’s lap during our phone call).

Austin was rarely far from the ring. Before her match, I saw her scuttling around, cornering fighters, and helping others warm up. She moved here from Indiana (a state that also banned trans people from changing their birth certificates) to start Red Panda Boxing a few months ago. Just this week, it moved from Ballard Jiu Jitsu to a new space in Capitol Hill.

Austin, who also teaches self-defense classes with Queer Fight Night (her student punched me in the head, which again, I’d recommend), says a lot of American fighting culture has a toxic fixation of “destroying” opponents. She’s not interested in recreating it. Competition is important—trans people need a place to strive like anyone else—but so is uplifting each other. It’s also important to teach trans people—who are largely seeking out martial arts because they’re scared they’ll have to fend off an attack one day—to have fun. The positive vibes, the hugging, the cheering? It’s no accident.

"This is why at our event we uphold those values to make them explicit, overt," she says. "We want each other to do well."

On fight night, co-founder Roote stood clutching a microphone in front of a giant pile of near-identical Doc Marten boots. She addressed the shoeless, but not sockless (thank God) crowd, who sat cross-legged on big blue sparring mats. At the back, people stood against the wall with their arms crossed. Those who were too far to see the action, or had their view blocked by the pillars at the center of the room, craned their necks toward a flat-screen TV mounted on the ceiling. It played a live camera feed from above the ring. 

Before the fights, Roote reminded the crowd not to take photos. Even though everyone fighting was happy to be fighting, this event was just the kind of thing the far-right may seize on. 

But for most of the night, a boisterous emcee named Mar was in control.

"Welcome to the rumble in rain city!" they said, welcoming the crowd to the first of twenty-two "whopping, astounding" fights. The sun had only just set, casting the bridge pylons outside in pale blue light. 

People smoking outside and watched through the front window. A fight had just finished.

"Send them all the good energy in the world," Mar said. "It's hard to take multiple kicks in the leg."

Tad Schultejans stood nervously in the red corner. It was their first ever kickboxing match. Their coach, Mad Green, hung off the side. A wave of brown hair peeked from under the green bandana on their head. Both fighter and coach had flown in from St. Louis, Missouri, along with eight members of their own “Queer Fight Club,” who chattered excitedly in front of me. 

Green’s Queer Fight Club started as an art school project. The idea was to start a fight club and document it relentlessly. But after the camera came down, the club kept going. They still teach three classes a week.

It’s a habit: Green grew up fighting. They’d learned from their father, a now long-retired amateur MMA fighter. As a kid, they competed in gyms all over Missouri they remembered as "toxic, remote" places. 

"It was not about joining a community and letting rage out," Green says. "It was being an individual who could kill another person."

Schultejans also grew up around martial arts, but stayed away from their Dad’s martial arts school out of fear. Though he encouraged Schultejans to take classes like their brother did, Schultejans couldn’t kick the feeling that they’d try and fail spectacularly. The feeling stuck until one frustrating day. They were sitting in their car after class and ruminating on a fight with a friend that had robbed their punches of power during class. And they decided they were done letting their head get in the way of their hands. They’ve punched hard since.  

With the bell, Schultejans rushed at their opponent, who staggered backward. Nothing dissuaded Schultejans. Not a nasty jab to the face in the first round, or the exhaustion that hung on their shoulders in the second. In the third round, they flew forward again and pistoned until the bell rang.

The referee held Schultejans’s red glove in the air. Green ran to their friends. 

"Y'all, that was so awesome," they said. Their smile was enormous.

19:35

[$] Kernel API specification and validation [LWN.net]

The kernel project makes a strong promise to its users: the kernel ABI will not be changed in ways that break user-space code. The occasional failure notwithstanding, kernel developers do try to live up to that promise. They are handicapped by one little problem, though: there is no description of what the kernel ABI is, and no comprehensive way to test whether a given change breaks it. The kernel API specification framework proposed (in its second revision) by Sasha Levin addresses some of those concerns, but the solution is incomplete and does not come for free.

19:00

Vote for Eddie Lin for City Council District 2 [The Stranger]

The Stranger's Primary 2025 Endorsement for City Council District 2 by Stranger Election Control Board

We didn’t know what kind of fresh hell we were in for when District 2 City Councilmember Tammy Morales bowed out of office one year into her second term. The appointment process sucked; the unimaginative snoozers on the city council selected multiple-SECB-endorsement-loser Mark Solomon to take the seat. Luckily, Solomon isn’t running to keep the seat, so we have an open race on our hands!

Which brings us to the pool of four viable D2 hopefuls: Union guy and SDCI inspector Jamie Fackler; restaurant organizer and activist Jeanie Chunn; assistant city attorney Eddie Lin; and mayoral transportation engagement manager Adonis Ducksworth.

After a lively (read: tense, yell-y) discussion, the clear choice for D2 is Eddie Lin. As an assistant city attorney, Lin’s focus for the last several years has been working with the Office of Housing. When it comes to housing, and building more of it, Lin knows his stuff. In the midst of a never-ending housing crisis and a new Social Housing Developer on its way through the Seattle Process’s long birth canal, we need someone who can get shit done. Lin knows we need subsidized affordable units, social housing, limited equity co-ops, and everything else under the sun to get people four walls and a roof. Plus, whoever sits on council will implement Mayor Bruce Harrell’s Comprehensive Plan. Lin, a fiend for density and walkable neighborhoods, is a smart choice to kickstart the next 20 years of Seattle’s growth.

One of the main hits against Lin, as Fackler repeatedly brought up, was that he didn’t go all out championing Proposition 1A, the voter measure that set up a funding mechanism for the Social Housing Developer. Lin didn't vote for it because, as a housing wonk, he was concerned that it was vulnerable to being undermined by a more conservative, Chamber-backed City Council. However, he says he’s come around and is ready to champion it. 

He’s also a total slut (sorry, Eddie) for progressive revenue. He’s DFAIT (Down For An Income Tax), a vacancy tax, and a city-level capital gains tax. We liked Chunn’s idea for a commercial vacancy tax, but felt she was still a little too green to hack it in City Hall. We hope to see her again.

The other knock against Lin is, like all other candidates except Chunn, he wants more cops. Lin’s desire for increased police presence does go hand-in-hand with hiring a more diverse police force and expanding police alternatives. Plus, Lin’s experience with police brutality made him wary of cops. In his 20s, a Minneapolis police officer cuffed him, put his hands on his throat, and made racist comments—confusing Lin, who is Asian, for a Native American. The rattling experience forever changed Lin’s view of policing. We felt Fackler, while progressive and knowledgeable about the same issues, was too soft on the cops, especially their union.

We’re certain Ducksworth will win the Seattle Times endorsement. He’s suave, charming, and doesn’t answer a single question. He’s also fucking cool. Sadly, underneath his skater chic, Ducksworth is nothing but a visionless moderate (read: Bruce Harrell). We already doubted he’d be our guy from the start, and he did us a solid by confirming that with a shitty, uninformed comment blaming drug users for their own predicament.

“I did the ride along last week, and these guys asked at least 50 people, are they ready to go to treatment? We got one. We got one. So this comes down to the person on the street, too. Who wants to get off the street,” Ducksworth said.

“That’s because some of the treatment options are not—,” Lin said.

“They’re not asking about the treatment options,” Ducksworth interrupted. “They’re getting high.”

Ducksworth’s mask came off. We did not like it under there.

So, Lin is our guy. He’s the whole package. He’s a cat guy and a dog guy. He’s a public schools champion. This is why we willfully turned a blind eye to the fact that he could only name two examples when asked what his four favorite films were and one of them was White Lotus Season 1, famously not a movie. If he’s even seen a movie, he wasn’t paying attention. There weren’t enough housing solutions for his taste. Vote Lin.

Editors Note: This endorsement originally appeared in The Stranger's July 2025 issue. In that version, we said Lin voted to support Prop 1A. After publication, his campaign clarified that he voted for 1B in February, but supports the social housing model now. We regret the error. Also, Jamie Fackler's last name is "Fackler" not "Frackler" (as it appeared in one instance in print). We regret the "r." Give a Frack doesn't hit like Give a Fack.

Welcome to The Stranger’s Primary Election Issue! [The Stranger]

Don’t forget to VOTE. What if it matters again? by Stranger Election Control Board

Wait, where are you going? This is important! It’s true that local primary elections can be a little—yawn—but please believe us when we tell you that this year’s primaries may just be the most exciting we’ve had in years.

Case in point: New York City’s recent mayoral primary. Just a summertime primary, no biggie, right? But it was full of drama and suspense, and the results were downright inspiring. Seattle could use some new energy as well, and, come August 5, it will be our votes that could make that happen. Nine candidates are vying for their shot to be mayor of Antifaland, and already, the conversation has revolved around two Democrats, incumbent Bruce Harrell and challenger Katie Wilson.

After hours of candidate interviews, research, and investigation—and one hell of a shouting match—we here at The Stranger are endorsing Katie Wilson for mayor of Seattle. And while the choice doesn’t really get made until November’s general election, to cast a vote for Wilson in the primaries would send a hell of a message to City Hall: It’s time for a change. It’s time for a new mayor. It’s time for Katie Wilson.

Click here to read more about our reasoning, and over the next few days, we'll be rolling out the rest of the endorsements we painstakingly researched and debated for days on end. (Spoiler: We plan to see Sara Nelson lose her job, too.) 

When you’re done doing your civic duty, why not treat yourself to some of the best pizza in town? Asian Verified columnist Michael Wong chats with one of Seattle’s most innovative chefs, Khampaeng Panyathong, the man behind Taurus Ox, Ox Burger, and Ananas Pizzeria. And Stranger staff writer Audrey Vann interviews pelagic dream rockers, Coral Grief, who celebrate the release of their debut album, Air Between Us, at the Tractor on July 26. Want more bang for your buck? Audrey also put together a flowchart to help you find your perfect music festival match this summer. 

There’s also a profile on Y2K-loving local fashion designer Dan McLean, an interview with author and culture critic Lawrence Burney, and, as always, a big ol’ Things To Do calendar full of music, food, art, film, comedy, theater, and culture recommendations and listings. Dance to tenderpunk project Illuminati Hotties at Ballard SeafoodFest on July 12! See weird and avant-garde contemporary art from all over the world at Seattle Art Fair July 17–20! Catch a screening of the underrated ’80s teen sex dramedy Little Darlings on July 29! There is something amazing to do literally every single day in July—click here to see it all.

Whatever you decide to do, don’t forget to VOTE. What if it matters again? 

Love,

The Stranger Election Control Board

Cover artwork by Victor Castillo, www.victor-castillo.com. This Issue Brought to You By….

A List of Good Things That Got Us Through Hours of Candidate Interviews

Incredible patience; yelling

A 45-second timer

The little gay people in our phones

Cole Escola’s beautiful doe eyes

The Safelite guy who fixed a car window and only left a little glass on the seat

Petting photos of dogs with my cursor (could a depressed person do this?)

Last-minute campaign dirt

Claudia Balducci assuming we like natural wine because we’re gay (and being right)

My new PMA tattoo 

Deming D’Ette

Sara Nelson’s vibrant green pants (no shade, they’re great)

Rachael Savage’s lipstick

Candidates who arrive 30 minutes early

Bars that open at 4 p.m.

Smoking a cigarette outside a hospital

Season two of Pokerface

Open Book by Jessica Simpson

Fruit Riot frozen sour candy-coated grapes

The rainbow seltzer tower in the QFC on Pike and Broadway

Raven Grass’s CBD/THC blend pre-rolls

Getting a cunty little charm for my vape pen

Scrunchies

Rainier cherries

MJ Lenderman’s wristwatch that tells him we’re all alone

George Dickel

“Hammer” by Lorde

Being funny 80 percent of the time

Midol

Caitlin Mary Cunningham serving harlequin goth on the basketball court

Friends’ boners

The Best Bang for Your Buck Events in Seattle This Fourth of July Weekend: July 4–6, 2025 [The Stranger]

Pioneer Square Fest, Seafair 4th of July, and More Cheap & Easy Events Under $15
by EverOut Staff

Look, the United States is a hot mess, but at least we get a three-day weekend out of its birthday. Make the most of it at events from the Pioneer Square Fest to Seafair 4th of July. For more suggestions, check out our top event picks of the week and our July events guide.

FRIDAY COMMUNITY

40th Annual Naturalization Ceremony
Head down to Seattle Center this Friday for a patriotic activity I wholeheartedly support: the swearing-in and welcoming of hundreds of new US citizens from around the world. Immigrants really do make America great, and the path to citizenship is not an easy one, which makes this ceremony a very important occasion to many of the participants. The schedule includes a performance of the national anthem accompanied by a brass band, a Native American welcome, and a gospel rendition of "America the Beautiful." SHANNON LUBETICH
(Fisher Pavilion, Uptown, free)

18:14

Slog AM: House GOP Pulls an All-Nighter, FEMA's Leaving States on Read, King County Assessor Gets Arrested [The Stranger]

The Stranger's morning news roundup. by Marcus Harrison Green

Partly Cloudy Day: Our weather today will be mostly cloudy in the morning, before handing us a partly sunny illusion of hope, with highs around 71. That’s what we’ve come to call summer in these parts if you're into emotional compromise. So wear the light jacket in the morning, switch to a tee later, and enjoy this rare meteorological miracle before the clouds remember they have beef with you.

House GOP Pulls All-Nighter to Move Deadly Bill Forward: While you were sleeping, House Republicans were busy trying to pass a spending bill packed with tax breaks for the rich and deep cuts to social programs, including $1 trillion in cuts to Medicaid and food assistance. By 10:30 p.m. Wednesday, they were still scrambling for votes to pass “the rule,” a procedural hurdle required to bring the bill to the floor. Normally, the majority party backs its own rules, but House Republicans are now so chaotic they’ve started mutinying against themselves. Inspiring stuff. By midnight, the rebellion was fading, and the bill looked likely to pass.

As of this writing, House Democratic Leader Hakeem Jeffries is entering his sixth hour of speaking in an effort to stall the vote. He said they only need four Republicans with “John McCain levels of courage” to stop the bill. Whether anyone in this Congress has that kind of backbone remains to be seen. Not holding our breath. The bill is headed to a final House vote.

FEMA’s Communication Blackout Is Leaving Disaster Response in Chaos: As hurricane season approaches, FEMA has slammed the door on communication, leaving state and local emergency officials scrambling for answers. From Wyoming to North Carolina, emergency managers say they’re being “ghosted” by FEMA, with vital questions about emergency funding going unanswered. Internal memos reveal top FEMA brass ordered staff to route all inquiries from Congress, the White House’s budget office, and the National Security Council through the acting FEMA administrator. Regional teams have even been told to limit what they share with local partners until supervisors approve it.

The result? A dangerous information bottleneck that’s delaying billions in emergency grants and could cripple disaster response just when it’s needed most. Meanwhile, Homeland Security Secretary Kristi Noem is tightening her grip on FEMA as the Trump administration plans to phase out the agency after hurricane season and shift disaster responsibility to the states. State and local officials warn this silence and confusion will cost lives. The DHS calls claims of a communication ban “fake news,” but FEMA insiders say the memos tell a different story. If FEMA won’t talk, who will answer when disaster strikes?

Big Gulag Energy: A new lawsuit says the Trump admin illegally deported Maryland father Kilmar Armando Abrego Garcia after a judge told them not to, and he was immediately thrown into El Salvador’s CECOT mega-prison. Upon arrival, a guard allegedly told detainees, “Welcome to CECOT. Whoever enters here doesn’t leave.” So that’s... encouraging. There, guards tortured him for months. According to newly filed court docs, they beat him, denied him sleep and bathroom access, and forced him to kneel for nine-hour stretches under 24/7 lights. Now he’s suing Marco Rubio, Pamela Bondi, Kristi Noem, and other Trumpworld cosplay cabinet members. The feds only brought him back last month, just in time to charge him with human smuggling. Asked about it, DHS mouthpiece Tricia McLaughlin called it a “sob story” and mocked reporters for asking. Charming.

DHS and FBI Warn of Lone Wolf Threats Ahead of July 4: Federal agencies are warning of lone actors and small extremist groups targeting July 4 events nationwide. In a joint statement, the FBI and DHS said, “These individuals are often motivated by a broad range of racial, ethnic, political, religious, anti-government, societal, or personal grievances.” While listing every grievance under the sun, they conveniently tiptoed around the fact that most of these so-called “lone wolves” are white American men with a penchant for violence and plummeting down YouTube rabbit holes, including the recent police-impersonating gunman who killed Minnesota state representative Melissa Hortman. There are also concerns about copycat attacks inspired by recent violence such as the Texas-born assailant who rammed a crowd in New Orleans earlier this year, killing 14.

The statement also noted that unauthorized drones add another layer of risk to public safety and event security. Officials urge vigilance as the nation prepares for July 4 celebrations, though it’s been years since America was a place where people could gather in groups without fearing violence.

Freak-Offs and Failed Convictions: Sean “Diddy” Combs just swerved a legal freight train, sort of. After a seven-week federal trial filled with graphic testimony, he was found not guilty Wednesday on racketeering and sex trafficking charges but still landed two felony convictions for transporting people across state lines for prostitution. The feds painted him as the baby-oil-soaked kingpin of a criminal sex ring, complete with drugs, violence, and “freak-offs” filmed like twisted episodes of Black Mirror. His defense? Yes, he’s an abuser, but most of these encounters were just consensual kinky fun with girlfriends, and the government was on a puritanical overreach mission. But don’t cue the victory lap just yet: a federal judge denied him bail, citing his “propensity for violence,” so he’s still behind bars and looking at up to 20 years in prison. Turns out “Bad Boy for Liife” hits different when the bars aren’t metaphorical.

Criminology Student Convicted of Idaho Murders: Bryan Kohberger, a criminology Ph.D. student who went from studying serial killers to becoming one, pleaded guilty to the 2022 murders of four University of Idaho students in a plea deal that takes the death penalty off the table but locks him away for life. Prosecutors laid out a grim, calculated plan involving late-night stalking, a military-style knife, and a disturbingly spotless getaway, but still couldn’t explain why he did it or how someone that creepy went unnoticed for so long. The victims' families were split: some were furious that he won’t face execution, while others are relieved to avoid years of retraumatizing courtroom theater. So we get closure without clarity, a killer without a cause, and a case that feels more like a tragic true crime podcast with no final resolution.

Bench the Bigotry, Not the Kids: In what I’m sure doesn’t portend a judicial decision crowdsourced from the pits of hell, the Supreme Court just RSVP’d to the next round of the culture war, agreeing to hear two cases about whether states can ban transgender athletes from girls’ and women’s sports. These cases, out of Idaho and West Virginia, are a bad-faith legal tug-of-war over equal protection and the right of trans kids to just exist and compete like everyone else. Fresh off blessing restrictions on gender-affirming care, the Court’s signaling it’s ready to weigh in on yet another front in the right-wing campaign to legislate trans people out of public life and follows Penn outright banning trans athletes.

Assessor of Poor Judgment: King County Assessor John Arthur Wilson got himself arrested Wednesday night for allegedly stalking his ex-fiancée and violating a restraining order because apparently, the bar for public office is now somewhere beneath the jail itself. Just hours before his arrest, the man was posting glam shots from an upscale restaurant, toasting what he called a “great day.” Wilson, of course, claims the arrest is all “political,” because in 2025, accountability is synonymous with another deep-state conspiracy.

Wrong Guy, Same Brutality: Vidal Palomar, a disabled father of three who fled cartel violence in Mexico, was violently arrested by ICE in Lynden, despite having no criminal record and, according to his attorney, being the victim of mistaken identity. Eyewitness video shows agents throwing him to the ground twice, even with a disabled placard clearly in view, and when he finally demanded to see a warrant, it showed a photo of someone else. ICE then allegedly offered him $1,000 to "just admit guilt and leave," because apparently failures of due process now come with a cash bonus. Palomar’s arrest has sent shockwaves through Whatcom County’s Latino community, where the message is loud and clear: being undocumented and brown is enough to get you disappeared.

Vote Wilson: In case you missed our mayoral endorsement, here’s the TL;DR: Bruce Harrell came in promising housing, police reform, and grown-up leadership, then promptly handed us more sweeps, tech bro distractions, and tantrums when asked basic questions. Turns out the real graffiti problem is the one scribbling over his own promises. Meanwhile, Katie Wilson actually has a plan to house people, fund services, and not spiral into finger-pointing every time things get hard. She’s smart, steady, and gives a damn (my own mama has even given her support) so let’s retire Bruce and give Seattle a mayor who doesn’t need a babysitter.

Raleigh is an All Star! Seattle Mariners catcher Cal Raleigh just went full Super Saiyan and got named an All-Star starter for the first time because when you hit 33 home runs before July, people notice. That’s third-most ever before July 1, right behind Barry Bonds and Mark McGwire (aka the Avengers of the steroid era). Raleigh’s basically carrying the Mariners on his back with a 1.024 OPS, 4.5 WAR, and even stealing bases now because apparently he woke up this season and chose MVP-level violence.

Bald and Back, Baby! A bald eagle in Tacoma just pulled off the ultimate comeback story. Rescued starving and grounded in May, it got the full wildlife VIP treatment and took flight again Wednesday like it never missed a beat. This bird had broken bones, was dehydrated, basically one step away from starring in a wildlife tragedy but thanks to the good folks at PAWS and Featherhaven, it’s back in the skies, hopefully reconnecting with its eagle boo.

Look, I don’t know what it is about Postmodern Jukebox covers, but they get me every, single, time. Like, why does a jazzed-up, gospel-fied version of U2 hit harder than catholic guilt on a Sunday morning? I can’t explain it. But here we are. So let’s start the day right:

Vote for Erika Evans for City Attorney [The Stranger]

The Stranger's endorsement for City Attorney in the 2025 primary. by Stranger Election Control Board

In case you’ve been living under a rock for the last three-and-a-half years, let us brief you on our current City Attorney: the regrettable Republican Ann Davison. 

The City Attorney has two jobs: one criminal (prosecuting all of the city’s misdemeanor cases, like DUIs and domestic violence charges) and one civil (acting as the city’s attorney, either suing people or other governments and also defending Seattle in court when, for instance, the Seattle Chamber of Commerce sues the city to kill the JumpStart tax).

From a criminal perspective, Davison’s whole thing is being “tough on crime,” which famously does nothing to make our city safer or to get people on the streets the help they need. She instituted policies like Close-in-Time filing. Implemented in 2022, it’s meant to reduce the criminal case backlog, but really just places the backlog in a different pile. It hasn’t worked. Her “High Utilizer Initiative” to target frequent offenders, surprise, also doesn’t solve any problems and worsens recidivism. Plus, Davison killed “community court,” an alternative system that offers people charged with misdemeanors non-punitive options to resolve their cases.

Meanwhile, Davison is unforgivably behind on filing DUI cases—one of the two serious misdemeanors the office can prosecute. Domestic violence cases are lagging. Back in 2021, before Davison, it took 26 days to file a DV case. Last year, on average, it took twice as long.

Davison is a tumor on the city and we don’t expect her to be willing to stand up to Trump. She converted to the Republican party during DJT’s first term, when anyone with an ounce of sense jumped ship. When King County, San Francisco, Santa Clara County, Portland, and New Haven signed onto a lawsuit against the Department of Homeland Security for their attacks on “sanctuary jurisdictions,” Davison dragged her feet, only joining the lawsuit months later. Meanwhile, while Boston and 43 other cities (including our less progressive neighbors, Spokane and Olympia) fought cuts to federal research funding, Davison stayed out of it. This person cannot protect us from the next three-and-a-half years (or more) of authoritarian encroachment. 

So, she sucks. We can’t let her win again. And she could. With three progressive challengers splitting the left vote, Davison will almost certainly skate through the primary, liberal Seattle bubble be damned. The people who didn’t march in the No Kings rally get ballots, too! 

Of this bunch, we believe Erika Evans, a former assistant US Attorney, is our choice to best Ann, make the City Attorney’s office effective and fair, and protect Seattle from the Trump administration. 

Evans has prosecuted hate crimes, she’s gone after drug traffickers, she’s slapped the wrists of business owners dipping into their employees’ wages, and she was involved in a case prosecuting January 6ers from Puyallup. Her résumé is impressive. Her platform (speed up DUI and DV case filings, bring back community court, prosecute wage theft, improve the police union contract to allow for more policing alternatives) mirrors the platforms of her opponents. But they don’t have her grit.

In our meeting, Evans leapt for her opponents’ throats. She presented exhibits for every argument, and demonstrated a deep understanding of the power, and limitations, of the City Attorney’s Office. She spoke thoughtfully about the importance of working closely with Washington Attorney General Nick Brown against the constitutionally intolerant Trump administration, and made a commitment to not prosecute “peaceful” protesters (though she wouldn’t define a “peaceful protester” for us, which is peak prosecutor brain). 

We also love a prop comedian: she brought Jarritos and African Black soap to symbolize SOAP/SODA laws, a Raggedy Ann doll to represent Davison, a printout of photos of the white men who have held this office for the 150 years before Ann got the job, a binder of her and her opponents case files. Sure, she gave Model-UN vibes, and if being corny were illegal this woman would be in jail. But it isn’t. And what we care about is Evans’s ability and will to protect us when Trump goes after this city.

We know, we know. A history as a prosecutor brings with it a track record of upholding a system built for oppression. But our federal government is actively antagonistic to cities like ours, and a prosecutor knows how the federal government works. Evans knows what levers to pull. And local progressives such as City Councilmember Alexis Mercedes Rinck and State Rep. Shaun Scott believe she’s the right choice despite all the prosecutorial baggage. 

But we don’t discount her mistakes and our misgivings. Evans voted for Bruce Harrell last election (“But I voted for Nikkita Oliver twice when they ran,” Evans said). She donated $100 to Harrell’s campaign before Katie Wilson got into the race, but wouldn’t say whom she was voting for in this election, and hedged by saying she couldn’t talk shit when the winner could be her client. Public defenders are worried about what her real intentions are and how she’ll act when she’s in the seat of power. We understand where they’re coming from. But we’re inviting her to prove them wrong. 

This wasn’t an easy decision. Any of Davison’s challengers would be wildly better for Seattle. We wish we could have endorsed Nathan Rouse, the public defender running for the seat, because he knows the system doesn’t work for everyday people and wants to change it. He’s tougher on the Seattle Police Officers Guild than any other candidates. But he didn’t convince us he could put his ideas into action or win. Please run again next time, Nathan. We want to see you in our swivel chairs again, with more experience under your belt. Thanks for the Pop-Tarts.

And Rory O’Sullivan could do a perfectly fine job in the role. But he lacks trial experience. And most importantly, we aren’t confident he could beat Davison. 

Evans will hit the ground running in a way we need. Here’s to knocking Davison into the stratosphere. Vote Evans. 

17:56

The Sens-AI Framework: Teaching Developers to Think with AI [Radar]

Developers are doing incredible things with AI. Tools like Copilot, ChatGPT, and Claude have rapidly become indispensable for developers, offering unprecedented speed and efficiency in tasks like writing code, debugging tricky behavior, generating tests, and exploring unfamiliar libraries and frameworks. When it works, it’s effective, and it feels incredibly satisfying.

But if you’ve spent any real time coding with AI, you’ve probably hit a point where things stall. You keep refining your prompt and adjusting your approach, but the model keeps generating the same kind of answer, just phrased a little differently each time, and returning slight variations on the same incomplete solution. It feels close, but it’s not getting there. And worse, it’s not clear how to get back on track.

That moment is familiar to a lot of people trying to apply AI in real work. It’s what my recent talk at O’Reilly’s AI Codecon event was all about.

Over the last two years, while working on the latest edition of Head First C#, I’ve been developing a new kind of learning path, one that helps developers get better at both coding and using AI. I call it Sens-AI, and it came out of something I kept seeing:

There’s a learning gap with AI that’s creating real challenges for people who are still building their development skills.

My recent O’Reilly Radar article “Bridging the AI Learning Gap” looked at what happens when developers try to learn AI and coding at the same time. It’s not just a tooling problem—it’s a thinking problem. A lot of developers are figuring things out by trial and error, and it became clear to me that they needed a better way to move from improvising to actually solving problems.

From Vibe Coding to Problem Solving

Ask developers how they use AI, and many will describe a kind of improvisational prompting strategy: Give the model a task, see what it returns, and nudge it toward something better. It can be an effective approach because it’s fast, fluid, and almost effortless when it works.

That pattern is common enough to have a name: vibe coding. It’s a great starting point, and it works because it draws on real prompt engineering fundamentals—iterating, reacting to output, and refining based on feedback. But when something breaks, the code doesn’t behave as expected, or the AI keeps rehashing the same unhelpful answers, it’s not always clear what to try next. That’s when vibe coding starts to fall apart.

Senior developers tend to pick up AI more quickly than junior ones, but that’s not a hard-and-fast rule. I’ve seen brand-new developers pick it up quickly, and I’ve seen experienced ones get stuck. The difference is in what they do next. The people who succeed with AI tend to stop and rethink: They figure out what’s going wrong, step back to look at the problem, and reframe their prompt to give the model something better to work with.

When developers think critically, AI works better. (slide from my May 8, 2025, talk at O’Reilly AI Codecon)

The Sens-AI Framework

As I started working more closely with developers who were using AI tools to try to find ways to help them ramp up more easily, I paid attention to where they were getting stuck, and I started noticing that the pattern of an AI rehashing the same “almost there” suggestions kept coming up in training sessions and real projects. I saw it happen in my own work too. At first it felt like a weird quirk in the model’s behavior, but over time I realized it was a signal: The AI had used up the context I’d given it. The signal tells us that we need a better understanding of the problem, so we can give the model the information it’s missing. That realization was a turning point. Once I started paying attention to those breakdown moments, I began to see the same root cause across many developers’ experiences: not a flaw in the tools but a lack of framing, context, or understanding that the AI couldn’t supply on its own.

The Sens-AI framework steps (slide from my May 8, 2025, talk at O’Reilly AI Codecon)

Over time—and after a lot of testing, iteration, and feedback from developers—I distilled the core of the Sens-AI learning path into five specific habits. They came directly from watching where learners got stuck, what kinds of questions they asked, and what helped them move forward. These habits form a framework that’s the intellectual foundation behind how Head First C# teaches developers to work with AI:

  1. Context: Paying attention to what information you supply to the model, trying to figure out what else it needs to know, and supplying it clearly. This includes code, comments, structure, intent, and anything else that helps the model understand what you’re trying to do.
  2. Research: Actively using AI and external sources to deepen your own understanding of the problem. This means running examples, consulting documentation, and checking references to verify what’s really going on.
  3. Problem framing: Using the information you’ve gathered to define the problem more clearly so the model can respond more usefully. This involves digging deeper into the problem you’re trying to solve, recognizing what the AI still needs to know about it, and shaping your prompt to steer it in a more productive direction—and going back to do more research when you realize that it needs more context.
  4. Refining: Iterating your prompts deliberately. This isn’t about random tweaks; it’s about making targeted changes based on what the model got right and what it missed, and using those results to guide the next step.
  5. Critical thinking: Judging the quality of AI output rather than just simply accepting it. Does the suggestion make sense? Is it correct, relevant, plausible? This habit is especially important because it helps developers avoid the trap of trusting confident-sounding answers that don’t actually work.

These habits let developers get more out of AI while keeping control over the direction of their work.

From Stuck to Solved: Getting Better Results from AI

I’ve watched a lot of developers use tools like Copilot and ChatGPT—during training sessions, in hands-on exercises, and when they’ve asked me directly for help. What stood out to me was how often they assumed the AI had done a bad job. In reality, the prompt just didn’t include the information the model needed to solve the problem. No one had shown them how to supply the right context. That’s what the five Sens-AI habits are designed to address: not by handing developers a checklist but by helping them build a mental model for how to work with AI more effectively.

In my AI Codecon talk, I shared a story about my colleague Luis, a very experienced developer with over three decades of coding experience. He’s a seasoned engineer and an advanced AI user who builds content for training other developers, works with large language models directly, uses sophisticated prompting techniques, and has built AI-based analysis tools.

Luis was building a desktop wrapper for a React app using Tauri, a Rust-based toolkit. He pulled in both Copilot and ChatGPT, cross-checking output, exploring alternatives, and trying different approaches. But the code still wasn’t working.

Each AI suggestion seemed to fix part of the problem but break another part. The model kept offering slightly different versions of the same incomplete solution, never quite resolving the issue. For a while, he vibe-coded through it, adjusting the prompt and trying again to see if a small nudge would help, but the answers kept circling the same spot. Eventually, he realized the AI had run out of context and changed his approach. He stepped back, did some focused research to better understand what the AI was trying (and failing) to do, and applied the same habits I emphasize in the Sens-AI framework.

That shift changed the outcome. Once he understood the pattern the AI was trying to use, he could guide it. He reframed his prompt, added more context, and finally started getting suggestions that worked. The suggestions only started working once Luis gave the model the missing pieces it needed to make sense of the problem.

Applying the Sens-AI Framework: A Real-World Example

Before I developed the Sens-AI framework, I ran into a problem that later became a textbook case for it. I was curious whether COBOL, a decades-old language developed for mainframes that I had never used before but wanted to learn more about, could handle the basic mechanics of an interactive game. So I did some experimental vibe coding to build a simple terminal app that would let the user move an asterisk around the screen using the W/A/S/D keys. It was a weird little side project—I just wanted to see if I could make COBOL do something it was never really meant for, and learn something about it along the way.

The initial AI-generated code compiled and ran just fine, and at first I made some progress. I was able to get it to clear the screen, draw the asterisk in the right place, handle raw keyboard input that didn’t require the user to press Enter, and get past some initial bugs that caused a lot of flickering.

But once I hit a more subtle bug—where ANSI escape codes like ";10H" were printing literally instead of controlling the cursor—ChatGPT got stuck. I’d describe the problem, and it would generate a slightly different version of the same answer each time. One suggestion used different variable names. Another changed the order of operations. A few attempted to reformat the STRING statement. But none of them addressed the root cause.

The COBOL app with a bug, printing a raw escape sequence instead of moving the asterisk.

The pattern was always the same: slight code rewrites that looked plausible but didn’t actually change the behavior. That’s what a rehash loop looks like. The AI wasn’t giving me worse answers—it was just circling, stuck on the same conceptual idea. So I did what many developers do: I assumed the AI just couldn’t answer my question and moved on to another problem.

At the time, I didn’t recognize the rehash loop for what it was. I assumed ChatGPT just didn’t know the answer and gave up. But revisiting the project after developing the Sens-AI framework, I saw the whole exchange in a new light. The rehash loop was a signal that the AI needed more context. It got stuck because I hadn’t told it what it needed to know.

When I started working on the framework, I remembered this old failure and thought it’d be a perfect test case. Now I had a set of steps that I could follow:

  • First, I recognized that the AI had run out of context. The model wasn’t failing randomly—it was repeating itself because it didn’t understand what I was asking it to do.
  • Next, I did some targeted research. I brushed up on ANSI escape codes and started reading the AI’s earlier explanations more carefully. That’s when I noticed a detail I’d skimmed past the first time while vibe coding: When I went back through the AI explanation of the code that it generated, I saw that the PIC ZZ COBOL syntax defines a numeric-edited field. I suspected that could potentially cause it to introduce leading spaces into strings and wondered if that could break an escape sequence.
  • Then I reframed the problem. I opened a new chat and explained what I was trying to build, what I was seeing, and what I suspected. I told the AI I’d noticed it was circling the same solution and treated that as a signal that we were missing something fundamental. I also told it that I’d done some research and had three leads I suspected were related: how COBOL displays multiple items in sequence, how terminal escape codes need to be formatted, and how spacing in numeric fields might be corrupting the output. The prompt didn’t provide answers; it just gave some potential research areas for the AI to investigate. That gave it what it needed to find the additional context it needed to break out of the rehash loop.
  • Once the model was unstuck, I refined my prompt. I asked follow-up questions to clarify exactly what the output should look like and how to construct the strings more reliably. I wasn’t just looking for a fix—I was guiding the model toward a better approach.
  • And most of all, I used critical thinking. I read the answers closely, compared them to what I already knew, and decided what to try based on what actually made sense. The explanation checked out. I implemented the fix, and the program worked.
My prompt that broke ChatGPT out of its rehash loop

Once I took the time to understand the problem—and did just enough research to give the AI a few hints about what context it was missing—I was able to write a prompt that broke ChatGPT out of the rehash loop, and it generated code that did exactly what I needed. The generated code for the working COBOL app is available in this GitHub GIST.

The working COBOL app that moves an asterisk around the screen

Why These Habits Matter for New Developers

I built the Sens-AI learning path in Head First C# around the five habits in the framework. These habits aren’t checklists, scripts, or hard-and-fast rules. They’re ways of thinking that help people use AI more productively—and they don’t require years of experience. I’ve seen new developers pick them up quickly, sometimes faster than seasoned developers who didn’t realize they were stuck in shallow prompting loops.

The key insight into these habits came to me when I was updating the coding exercises in the most recent edition of Head First C#. I test the exercises using AI by pasting the instructions and starter code into tools like ChatGPT and Copilot. If they produce the correct solution, that means I’ve given the model enough information to solve it—which means I’ve given readers enough information too. But if it fails to solve the problem, something’s missing from the exercise instructions.

The process of using AI to test the exercises in the book reminded me of a problem I ran into in the first edition, back in 2007. One exercise kept tripping people up, and after reading a lot of feedback, I realized the problem: I hadn’t given readers all the information they needed to solve it. That helped connect the dots for me. The AI struggles with some coding problems for the same reason the learners were struggling with that exercise—because the context wasn’t there. Writing a good coding exercise and writing a good prompt both depend on understanding what the other side needs to make sense of the problem.

That experience helped me realize that to make developers successful with AI, we need to do more than just teach the basics of prompt engineering. We need to explicitly instill these thinking habits and give developers a way to build them alongside their core coding skills. If we want developers to succeed, we can’t just tell them to “prompt better.” We need to show them how to think with AI.

Where We Go from Here

If AI really is changing how we write software—and I believe it is—then we need to change how we teach it. We’ve made it easy to give people access to the tools. The harder part is helping them develop the habits and judgment to use them well, especially when things go wrong. That’s not just an education problem; it’s also a design problem, a documentation problem, and a tooling problem. Sens-AI is one answer, but it’s just the beginning. We still need clearer examples and better ways to guide, debug, and refine the model’s output. If we teach developers how to think with AI, we can help them become not just code generators but thoughtful engineers who understand what their code is doing and why it matters.

17:35

Digital editions on big sale [Seth's Blog]

As many of my readers get ready for a long weekend, here are two of my books now on discount at Amazon–for another few days.

This is Strategy is 90% off on the Kindle. $3!

And This is Marketing is discounted as well.

If you’ve read or listened to either one, here’s a new AI tool I just built as a free bonus.

17:28

German language cheat sheet: On changing quantities [The Old New Thing]

Somehow, I must have missed out on learning phrases of changes in quantity in German, so I need a cheat sheet.

Trend Quantity
Low High
Decreasing nur noch
“only…left”
immer noch
“still”
Increasing erst
“so far”
schon
“already”
Stable/Unknown nur
“only”
 

(Native German speakers: Please feel free to offer corrections.)

Here’s a sentence pattern for demonstration.

I   have only 100 left = Ich habe nur noch 100 : ˦˨ I used to have more, but I’m running low.
I still have   100   = Ich habe immer noch 100 : ˦˧ I used to have more, but I’m not running low yet.
I   have   100 so far = Ich habe erst 100 : ˩˨ It’s not much, but it’s more than I had before.
I   have   100 already = Ich habe schon 100 : ˩˧ It’s quite a bit, and it’s more than I had before.
I   have only 100   = Ich habe nur 100 : ˩ It’s not much, but that’s typical.
I   have   100   = Ich habe   100 : It is what it is.

It’s interesting to me that the last box is empty. Neither English nor German seems to have a clear phrase pattern to indicate “I have a lot, and that’s typical.”

Learning another language gives you a chance to reflect upon your own. When laid out this way, it does seem weird that the English patterns scatter the modifier words into three different positions in the sentence.

Note: These adverbs also have meanings unrelated to quantity. I’m focusing on the quantity-related meanings.

The post German language cheat sheet: On changing quantities appeared first on The Old New Thing.

If the Format­Message function fails, and I requested that it allocate a buffer, do I have to free the buffer? [The Old New Thing]

A customer called the Format­Message function with the FORMAT_MESSAGE_ALLOCATE_BUFFER flag, and they weren’t sure what to do if the function fails (by returning 0). Do they have to free the buffer by calling Local­Free?

No, you don’t have to free the buffer. In fact, on failure, there is no buffer. The function failed to perform the desired operation, so there is nothing to clean up.

You can make things easier on yourself by pre-initializing the output pointer to NULL. That way, if the function fails, the pointer is still null. Then your logic can be “Go ahead and free the buffer,” because the Local­Free function allows you to pass NULL, and it just ignores it. (This trick allows things like wil::unique_hlocal_string to work with FormatMessage.)

Thinking about the original question: You can’t tell whether the reason for the function failure is that something went wrong during formatting or that something went wrong during allocation of the final output buffer. You could call Get­Last­Error(), but if it returns ERROR_OUT_OF_MEMORY, you still don’t know whether it ran out of memory during the formatting phase or during the final buffer allocation phase. Therefore, even if you wanted to free the buffer, you don’t know whether you even got one in the first place.

The post If the <CODE>Format­Message</CODE> function fails, and I requested that it allocate a buffer, do I have to free the buffer? appeared first on The Old New Thing.

The Big Idea: E. L. Starling [Whatever]

We do so love the big blue marble we call home, don’t we? But what if humans had another home, and what if it was our red and dusty space neighbor? Author E.L. Starling poses this question in the Big Idea for newest novel, Bound By Stars, thinking up possibilities about the future that are certainly dystopian, but also realistic. Follow along on a journey through the stars, and try to keep afloat as the (space)ship goes down.

E. L. STARLING:

My family rewatches Interstellar together every year, which sometimes (read: always) devolves into a heated debate about complex theories, space time, and whether “they” really were aliens or just an unfathomable combination of future human technology and a natural anomaly splicing through the multiverse. (Probably the aliens, right?)

In spring of 2022, as the credits rolled, my oldest veered off our usual set of topics and brought up a certain billionaire’s desire to terraform Mars. We all responded with eye rolls and a version of the same sentiment, “How about putting that effort into combating climate change on this planet where we already have oxygen, water, and atmosphere?”

Plus, if I’m being completely honest, even if Mars was a viable option for everyone, you can still leave me here. Reading in a car going 25 mph flips my stomach inside out. And, the vastness of the unknown is a fear I would rather not face.

But, what would that be like? What if the wealthy abandoned Earth to create a utopia 140 million miles away and left the rest of the world’s population behind? Would they really leave Earth for good? Terraforming is a long game. They would still need resources. Would they use Earth like their new planet’s remote farm and factory? There was so much to consider.

This discussion sparked an idea. Two worlds. Separated by space and socioeconomic classes. 

As my family members scattered, I was building the dystopia in my mind: After the Earth is ravaged by climate change, the population decimated, and society reshaped, the wealthy still control the resources, but they’ve drilled for water, built infrastructure, and established a safe haven in luxurious habitat cities on Mars. 

The dynamics of the world set up the perfect main characters: two people from different classes and different planets. And what if they were teenagers in this world— still required to manage school, bullies, love, homework, and their impending futures? What if I upped the stakes further and put them on a doomed starliner between their two worlds? There was The Big Idea: YA Titanic-in-space.

Enter Jupiter Dalloway and Weslie Fleet. Jupiter is from Mars. Born at the top of society. The heir to a multi-trillion-dollar company. Unsatisfied with his predetermined future. Weslie’s from Earth. Hardened by a life of struggle and injustice. Full of confidence and armed with the attitude to call out Jupiter’s alarming privilege. Both of them seventeen, on the tailend of adolescence. Two people who learn to appreciate and celebrate each other’s differences despite the backdrop of a complex and oppressive world.

Choosing to write Bound by Stars as a YA novel was a conscious endeavor for me. At that age, you’re near adulthood, but still not fully in control of your own life. There are people who dictate the basics of your day to day, but you’re the one expected to make decisions about your future. High school graduation, college, the rest of your life is just around the bend in the road ahead. You’re shaped by every heartbreak, moment of triumph, cruel word, and act of kindness. And all the emotions inside you are bigger, stronger, more passionate. The future feels open. Possible. Big. Scary.

I love celebrating this multitude for joy, hope, injustice, and even sadness. In my opinion, this is great insight into why we often throw teenager characters into dystopian stories. While sometimes labeled as “overly emotional” or “out of control,” that “too much-ness” of adolescence is human emotion at its absolute fullest capacity. I can’t help but respect someone who can experience heartbreak like a life-ending blow and still care about their friends, show up for band practice, sing their heart out in a theater production, and write that 5-page essay due at the end of the week. 

And on top of it all—today’s youth are growing up with a true fear of climate change and developing an understanding of the dangers of unfettered capitalism in real time, while being asked “What do you want to do with your life after high school?” 

Of course, the compelling lightbulb of “Titanic-in-space” was fun and romantic: a chance to create parallels to an epic love story in a high-stake situation. But there was a level deeper. Underneath the outrageous opulence of the ship headed for Mars, sharp banter between characters from different worlds, slow-burn romance, and an action-packed, “there aren’t enough lifeboats (or escape pods in this case)” climax, Bound by Stars is a story about relatable, young characters navigating life in bleak future landscape. After all, dystopian novels can reflect the complexities of existing in this stage of life, while—hopefully—offering a bit of hope and inspiration.


Bound By Stars: Amazon|Barnes & Noble|Bookshop

Author socials: Website|Facebook|Instagram

17:21

Big Tech’s Mixed Response to U.S. Treasury Sanctions [Krebs on Security]

In May 2025, the U.S. government sanctioned a Chinese national for operating a cloud provider linked to the majority of virtual currency investment scam websites reported to the FBI. But a new report finds the accused continues to operate a slew of established accounts at American tech companies — including Facebook, Github, PayPal and Twitter/X.

On May 29, the U.S. Department of the Treasury announced economic sanctions against Funnull Technology Inc., a Philippines-based company alleged to provide infrastructure for hundreds of thousands of websites involved in virtual currency investment scams known as “pig butchering.” In January 2025, KrebsOnSecurity detailed how Funnull was designed as a content delivery network that catered to foreign cybercriminals seeking to route their traffic through U.S.-based cloud providers.

The Treasury also sanctioned Funnull’s alleged operator, a 40-year-old Chinese national named Liu “Steve” Lizhi. The government says Funnull directly facilitated financial schemes resulting in more than $200 million in financial losses by Americans, and that the company’s operations were linked to the majority of pig butchering scams reported to the FBI.

It is generally illegal for U.S. companies or individuals to transact with people sanctioned by the Treasury. However, as Mr. Lizhi’s case makes clear, just because someone is sanctioned doesn’t necessarily mean big tech companies are going to suspend their online accounts.

The government says Lizhi was born November 13, 1984, and used the nicknames “XXL4” and “Nice Lizhi.” Nevertheless, Steve Liu’s 17-year-old account on LinkedIn (in the name “Liulizhi”) had hundreds of followers (Lizhi’s LinkedIn profile helpfully confirms his birthday) until quite recently: The account was deleted this morning, just hours after KrebsOnSecurity sought comment from LinkedIn.

Mr. Lizhi’s LinkedIn account was suspended sometime in the last 24 hours, after KrebsOnSecurity sought comment from LinkedIn.

In an emailed response, a LinkedIn spokesperson said the company’s “Prohibited countries policy” states that LinkedIn “does not sell, license, support or otherwise make available its Premium accounts or other paid products and services to individuals and companies sanctioned by the U.S. government.” LinkedIn declined to say whether the profile in question was a premium or free account.

Mr. Lizhi also maintains a working PayPal account under the name Liu Lizhi and username “@nicelizhi,” another nickname listed in the Treasury sanctions. PayPal did not respond to a request for comment. A 15-year-old Twitter/X account named “Lizhi” that links to Mr. Lizhi’s personal domain remains active, although it has few followers and hasn’t posted in years.

These accounts and many others were flagged by the security firm Silent Push, which has been tracking Funnull’s operations for the past year and calling out U.S. cloud providers like Amazon and Microsoft for failing to more quickly sever ties with the company.

Liu Lizhi’s PayPal account.

In a report released today, Silent Push found Lizhi still operates numerous Facebook accounts and groups, including a private Facebook account under the name Liu Lizhi. Another Facebook account clearly connected to Lizhi is a tourism page for Ganzhou, China called “EnjoyGanzhou” that was named in the Treasury Department sanctions.

“This guy is the technical administrator for the infrastructure that is hosting a majority of scams targeting people in the United States, and hundreds of millions have been lost based on the websites he’s been hosting,” said Zach Edwards, senior threat researcher at Silent Push. “It’s crazy that the vast majority of big tech companies haven’t done anything to cut ties with this guy.”

The FBI says it received nearly 150,000 complaints last year involving digital assets and $9.3 billion in losses — a 66 percent increase from the previous year. Investment scams were the top crypto-related crimes reported, with $5.8 billion in losses.

In a statement, a Meta spokesperson said the company continuously takes steps to meet its legal obligations, but that sanctions laws are complex and varied. They explained that sanctions are often targeted in nature and don’t always prohibit people from having a presence on its platform. Nevertheless, Meta confirmed it had removed the account, unpublished Pages, and removed Groups and events associated with the user for violating its policies.

Attempts to reach Mr. Lizhi via his primary email addresses at Hotmail and Gmail bounced as undeliverable. Likewise, his 14-year-old YouTube channel appears to have been taken down recently.

However, anyone interested in viewing or using Mr. Lizhi’s 146 computer code repositories will have no problem finding GitHub accounts for him, including one registered under the NiceLizhi and XXL4 nicknames mentioned in the Treasury sanctions.

One of multiple GitHub profiles used by Liu “Steve” Lizhi, who uses the nickname XXL4 (a moniker listed in the Treasury sanctions for Mr. Lizhi).

Mr. Lizhi also operates a GitHub page for an open source e-commerce platform called NexaMerchant, which advertises itself as a payment gateway working with numerous American financial institutions. Interestingly, this profile’s “followers” page shows several other accounts that appear to be Mr. Lizhi’s. All of the account’s followers are tagged as “suspended,” even though that suspended message does not display when one visits those individual profiles.

In response to questions, GitHub said it has a process in place to identify when users and customers are Specially Designated Nationals or other denied or blocked parties, but that it locks those accounts instead of removing them. According to its policy, GitHub takes care that users and customers aren’t impacted beyond what is required by law.

All of the follower accounts for the XXL4 GitHub account appear to be Mr. Lizhi’s, and have been suspended by GitHub, but their code is still accessible.

“This includes keeping public repositories, including those for open source projects, available and accessible to support personal communications involving developers in sanctioned regions,” the policy states. “This also means GitHub will advocate for developers in sanctioned regions to enjoy greater access to the platform and full access to the global open source community.”

Edwards said it’s great that GitHub has a process for handling sanctioned accounts, but that the process doesn’t seem to communicate risk in a transparent way, noting that the only indicator on the locked accounts is the message, “This repository has been archived by the owner. It is not read-only.”

“It’s an odd message that doesn’t communicate, ‘This is a sanctioned entity, don’t fork this code or use it in a production environment’,” Edwards said.

Mark Rasch is a former federal cybercrime prosecutor who now serves as counsel for the New York City based security consulting firm Unit 221B. Rasch said when Treasury’s Office of Foreign Assets Control (OFAC) sanctions a person or entity, it then becomes illegal for businesses or organizations to transact with the sanctioned party.

Rasch said financial institutions have very mature systems for severing accounts tied to people who become subject to OFAC sanctions, but that tech companies may be far less proactive — particularly with free accounts.

“Banks have established ways of checking [U.S. government sanctions lists] for sanctioned entities, but tech companies don’t necessarily do a good job with that, especially for services that you can just click and sign up for,” Rasch said. “It’s potentially a risk and liability for the tech companies involved, but only to the extent OFAC is willing to enforce it.”

Liu Lizhi operates numerous Facebook accounts and groups, including this one for an entity specified in the OFAC sanctions: The “Enjoy Ganzhou” tourism page for Ganzhou, China. Image: Silent Push.

In July 2024, Funnull purchased the domain polyfill[.]io, the longtime home of a legitimate open source project that allowed websites to ensure that devices using legacy browsers could still render content in newer formats. After the Polyfill domain changed hands, at least 384,000 websites were caught in a supply-chain attack that redirected visitors to malicious sites. According to the Treasury, Funnull used the code to redirect people to scam websites and online gambling sites, some of which were linked to Chinese criminal money laundering operations.

The U.S. government says Funnull provides domain names for websites on its purchased IP addresses, using domain generation algorithms (DGAs) — programs that generate large numbers of similar but unique names for websites — and that it sells web design templates to cybercriminals.

“These services not only make it easier for cybercriminals to impersonate trusted brands when creating scam websites, but also allow them to quickly change to different domain names and IP addresses when legitimate providers attempt to take the websites down,” reads a Treasury statement.

Meanwhile, Funnull appears to be morphing nearly all aspects of its business in the wake of the sanctions, Edwards said.

“Whereas before they might have used 60 DGA domains to hide and bounce their traffic, we’re seeing far more now,” he said. “They’re trying to make their infrastructure harder to track and more complicated, so for now they’re not going away but more just changing what they’re doing. And a lot more organizations should be holding their feet to the fire.”

Update, 2:48 PM ET: Added response from Meta, which confirmed it has closed the accounts and groups connected to Mr. Lizhi.

16:42

Vote for Dionne Foster for City Council Position 9 [The Stranger]

The Stranger's endorsement for City Council Position 9, in the 2025 primary election. by Stranger Election Control Board

Seattle will not have a functional city government until Sara Nelson is KO’d so far out of our political orbit that she’ll be nothing more than a footnote: a forgettable, one-time City Council President who reigned over this legislative body during a remarkably chaotic and useless time in its history.

At this point, progressives would endorse a cinder block over Nelson if it had a pulse and a fixed Seattle address. Fortunately, we don’t have to. Because we have Dionne Foster, an excellent candidate for this office. Rejoice!

Foster, a former policy advisor for the city and the former executive director of the nonprofit Washington Progress Alliance, is a knowledgeable, likable, competent wonk. She wants to lead the way on economic justice. Stop this city’s affordability crisis and addiction to sweeps from displacing people. She’ll fight conservatives on this council willing to divert JumpStart funds from affordable housing. Unlike Nelson, Foster knows Seattle must go harder for housing density than the legal minimum set by the state and that it’s unrealistic for a real city expecting major growth in the next two decades to click its ruby red heels, ignore its housing needs, and remain an overgrown, dysfunctional suburb forever.

 Foster also wants to embrace affordability and outrun Washington’s regressive tax code with progressive revenue. She wants a municipal capital gains tax, a vacancy tax, and working with the state on a mansion tax. She has the right plans and can articulate exactly how she’d implement them, a rare quality on our curb-busting city council. She’s granular, but not myopic. And we believe her because she already did this work at the state level to pass the limited capital gains tax

Foster has earned a heap of endorsements from politicians like Congresswoman Pramila Jayapal, State Rep. Shaun Scott (D-43), and Scott’s dearly departed predecessor, Frank Chopp, because she is the best, quickest-witted candidate to walk through our door this election cycle. With two other seats up for reelection, that’s a chance she won’t be a progressive island on council.

Nelson, on the other hand, is a fundamentally un-democratic chaos agent and a disastrous leader whose sole purpose has been to accumulate political power. Her Council’s “accomplishments” have been wildly unpopular: Approving a police contract with big raises and no accountability? Putting blast balls back in the hands of untrustworthy cops, and ensuring they can surveil us? Establishing “stay out” zones for drug users and sex workers that stigmatize people and don’t work? Attempting to weaken our ethics code and repeal protections for gig workers? We’re embarrassed.

Seattle is immobilized in Nelson’s… full Nelson, controlled by business interests who shelled out hundreds of thousands of dollars for her meandering status quo that squeezes the renters, the poor, the homeless, and the disadvantaged on the margins. A skilled politician at least pretends to listen. Nelson is either incapable or indifferent. She shuts down anyone who is too loud and cumbersome for her taste. Her hostility for representative government and working people is boundless. But in her hallowed chambers at least we’ll have decorum, won’t we?

Her contempt for the public seemed like the only reason competitor Connor Nash, a former state and federal employee, joined this race. Mia Jacobsen, on the other hand, is running a protest campaign to overhaul the system that puts people like Nelson in the driver’s seat. Nash was angry, shooed away too many times.

But Nelson isn’t just the rock and the hard place. She’s a liability. A threat to reforms from a more progressive council, a roadblock to desperately needed progress on housing and homelessness, and the last person we want in city government when President Donald Trump comes to play. We’re tired of incompetence. We want someone with ideas, who loves this city and its people. A vote for Nelson is a vote for nihilism. A vote for Foster is a vote for intelligence, compassion, solutions, and a chance for a future.

Vote Foster.

16:35

Our small team vs millions of bots [Planet GNU]

Read the latest update from the FSF tech team.

15:49

Security updates for Thursday [LWN.net]

Security updates have been issued by AlmaLinux (.NET 9.0, aardvark-dns, apache-commons-beanutils, bootc, buildah, corosync, delve and golang, exiv2, expat, firefox, ghostscript, git, git-lfs, gnutls, grafana, grafana-pcp, grub2, gstreamer1, gstreamer1-plugins-bad-free, gstreamer1-plugins-ugly-free, and gstreamer1-rtsp-server, gstreamer1-plugins-base, gstreamer1-plugins-good, gvisor-tap-vsock, iptraf-ng, java-21-openjdk, kernel, keylime-agent-rust, krb5, libarchive, libblockdev, libsoup3, libtasn1, libvpx, libxslt, microcode_ctl, mod_auth_openidc, nodejs22, nodejs:20, openjpeg2, osbuild and osbuild-composer, perl-FCGI, perl-Module-ScanDeps, perl-YAML-LibYAML, php, php:8.2, php:8.3, podman, protobuf, python-jinja2, python-requests, python3.11, python3.12, python3.12-cryptography, python3.9, rpm-ostree, rsync, rust-bootupd, skopeo, thunderbird, tigervnc, tomcat, tomcat9, webkit2gtk3, xdg-utils, xorg-x11-server, and xorg-x11-server-Xwayland), Debian (ring), Mageia (libarchive and rootcerts, nss & firefox), Oracle (.NET 9.0, corosync, firefox, osbuild-composer, pam, python3, python3.11, python3.12, python3.9, skopeo, sudo, and thunderbird), Red Hat (microcode_ctl, pam, php, thunderbird, tigervnc, xorg-x11-server, xorg-x11-server and xorg-x11-server-Xwayland, and xorg-x11-server-Xwayland), SUSE (clamav, icu, libgepub, libsoup, python-requests, tomcat, and xorg-x11-server), and Ubuntu (clamav, logback, mongo-c-driver, pcs, and python-flask-cors).

14:56

Link [Scripting News]

WordLand v0.5.17 -- Two changes with linkblog support.

14:21

AI note takers are flooding Zoom calls as workers opt to skip meetings [OSnews]

Clifton Sellers attended a Zoom meeting last month where robots outnumbered humans.

He counted six people on the call including himself, Sellers recounted in an interview. The 10 others attending were note-taking apps powered by artificial intelligence that had joined to record, transcribe and summarize the meeting.

↫ Lisa Bonos and Danielle Abril at The Bezos Post

Management strongly encourages – mandates – that everyone use “AI” to improve productivity, but then gets all uppity when people actually do.

Welcome to “finding out”.

Elementary OS makes meaningful accessibility improvements [OSnews]

With recent efforts to improve accessibility in GNOME and KDE, as well as a renewed focus on highlighting the many issues that still need fixing, the Linux desktop is making meaningful strides in becoming more accessible to those among us with disabilities. Obviously, the Linux desktop is bigger than just GNOME and KDE, so today we have elementary OS improving its accessibility features in a variety of ways.

July is Disability Pride Month, an opportunity for us to consider how we’re serving our disabled community and work on breaking down barriers to access. Last year we had the pleasure of being introduced to Florian—a fully blind cybersecurity enthusiast—and thanks to his feedback we completely rewrote navigation in Onboarding to be more keyboard and screen reader friendly, as well as took another look at Installation and Initial Setup to vastly improve our entire first run experience for blind folks. Plus, we implemented the screen reader interface in the  +  window switcher. Thanks to this feedback, elementary OS 8 can be installed and set up completely blind, an important win for maintaining your independence as a person with vision disabilities.

Since the release of OS 8 we’ve been working on things like improving contrast, support for Dark Mode screenshots and brand colors in AppCenter, turning on or snoozing Dark Mode without canceling your schedule, expanding the scope of the “Reduce Motion” setting, and adding more options to reduce distracting notification bubbles. Plus, thanks to feedback from Aaron who you may know from his blog series on Linux accessibility, Notifications and the Shortcut Overlay both got releases that add screen reader support.

↫ Danielle Foré at elementary’s blog

I’m glad we’re finally putting to rest this idea that accessibility features should be afterthoughts, relevant to only a minute percentage of people. Not only is the disabled community way bigger than we might think, many of the features they require are simply also extremely nice and beneficial to users who might not actually require them. I know tons of people who, for instance, love reduce motion features simply because it makes their operating system feel faster, or people who just don’t want to be bothered with notifications the instant they arrive.

Accessibility goes far beyond what we traditionally think of as accessibility features, like screen readers or high contrast modes. Making software more accessible for those that require it, also makes software more accessible for those that merely desire it. Even though elementary OS probably isn’t the type of distribution that appeals to the average OSNews reader, I’m incredibly happy they’re taking accessibility seriously, and I intend to continue to highlight such improvements.

13:21

Link [Scripting News]

BTW, this is where we're going with WordLand. We can have a nice social web that builds on simple open formats. I will make an instance of this to show it can be done, both sides, reading and writing. They will work wonderfully with each other. You can write a nice reader and/or writer and it will work with this simple network. A technological coral reef. Think of the MacWrite and MacPaint of the open social web. Enough to get the ball rolling.

Link [Scripting News]

Looking forward to putting linkblogs in WordLand to bed, I don't think too many people other than myself will use the feature, but I wanted to get it right and then move on.

CodeSOD: The Last Last Name [The Daily WTF]

Sometimes, you see some code which is perfectly harmless, but illustrates an incredibly dangerous person behind them. The code isn't good, but it isn't bad in any meaningful way, but it was written by a cocaine addled Pomeranian behind the controls of a bulldozer: it's full of energy, doesn't know exactly what's going on, and at some point, it's going to hit something important.

Such is the code which Román sends us.

public static function registerUser($name, $lastName, $username, ...) {
    // 100% unmodified first lines, some comments removed
    $tsCreation = new DateTime();
    $user = new User();
      
    $name = $name;
    $lastname = $lastName;
    $username = $username;
       
    $user->setUsername($username);
        $user->setLastname($lastname);
        $user->setName($name);
        // And so on.
}

This creates a user object and populates its fields. It doesn't use a meaningful constructor, which is its own problem, but that's not why we're here. We're here because for some reason the developer behind this function assigns some of the parameters to themselves. Why? I don't know, but it's clearly the result of some underlying misunderstanding of how things work.

But the real landmine is the $lastname variable- which is an entirely new variable which has slightly different capitalization from $lastName.

And you've all heard this song many times, so sing along with the chorus: "this particular pattern shows up all through the codebase," complete with inconsistent capitalization.

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

12:49

Surveillance Used by a Drug Cartel [Schneier on Security]

Once you build a surveillance system, you can’t control who will use it:

A hacker working for the Sinaloa drug cartel was able to obtain an FBI official’s phone records and use Mexico City’s surveillance cameras to help track and kill the agency’s informants in 2018, according to a new US justice department report.

The incident was disclosed in a justice department inspector general’s audit of the FBI’s efforts to mitigate the effects of “ubiquitous technical surveillance,” a term used to describe the global proliferation of cameras and the thriving trade in vast stores of communications, travel, and location data.

[…]

The report said the hacker identified an FBI assistant legal attaché at the US embassy in Mexico City and was able to use the attaché’s phone number “to obtain calls made and received, as well as geolocation data.” The report said the hacker also “used Mexico City’s camera system to follow the [FBI official] through the city and identify people the [official] met with.”

FBI report.

12:07

Religion as political cudgel, Turkey [Richard Stallman's Political Notes]

The publication in Turkey of a cartoon which appears to show Muhammad and Moses shaking hands inspired Erdoğan's tyranny to revile and imprison the cartoonists.

Apparently the idea of peace between religious groups is "against [the] sacred values" of religious fanatics.

Condemnation of depicting Muhammad has not been a universal principle of Islam, and anyway, no religious group has the right to impose censorship on the public. Not Muslims in Turkey, not Christians in the US, and not Jews either.

12:00

Russell Coker: The Fuss About “AI” [Planet Debian]

There are many negative articles about “AI” (which is not about actual Artificial Intelligence also known as “AGI”). Which I think are mostly overblown and often ridiculous.

Resource Usage

Complaints about resource usage are common, training Llama 3.1 could apparently produce as much pollution as “10,000 round trips by car between Los Angeles and New York City”. That’s not great but when you compare to the actual number of people doing such drives in the US and the number of people taking commercial flights on that route it doesn’t seem like such a big deal. Apparently commercial passenger jets cause CO2 emissions per passenger about equal to a car with 2 people. Why is it relevant whether pollution comes from running servers, driving cars, or steel mills? Why not just tax polluters for the damage they do and let the market sort it out? People in the US make a big deal about not being communist, so why not have a capitalist solution, make it more expensive to do undesirable things and let the market sort it out?

ML systems are a less bad use of compute resources than Bitcoin, at least ML systems give some useful results while Bitcoin has nothing good going for it.

The Dot-Com Comparison

People often complain about the apparent impossibility of “AI” companies doing what investors think they will do. But this isn’t anything new, that all happened before with the “dot com boom”. I’m not the first person to make this comparison, The Daily WTF (a high quality site about IT mistakes) has an interesting article making this comparison [1]. But my conclusions are quite different.

The result of that was a lot of Internet companies going bankrupt, the investors in those companies losing money, and other companies then bought up their assets and made profitable companies. The cheap Internet we now have was built on the hardware from bankrupt companies which was sold for far less than the manufacture price. That allowed it to scale up from modem speeds to ADSL without the users paying enough to cover the purchase of the infrastructure. In the early 2000s I worked for two major Dutch ISPs that went bankrupt (not my fault) and one of them continued operations in the identical manner after having the stock price go to zero (I didn’t get to witness what happened with the other one). As far as I’m aware random Dutch citizens and residents didn’t suffer from this and employees just got jobs elsewhere.

There are good things being done with ML systems and when companies like OpenAI go bankrupt other companies will buy the hardware and do good things.

NVidia isn’t ever going to have the future sales that would justify a market capitalisation of almost 4 Trillion US dollars. This market cap can support paying for new research and purchasing rights to patented technology in a similar way to the high stock price of Google supported buying YouTube, DoubleClick, and Motorola Mobility which are the keys to Google’s profits now.

The Real Upsides of ML

Until recently I worked for a company that used ML systems to analyse drivers for signs of fatigue, distraction, or other inappropriate things (smoking which is illegal in China, using a mobile phone, etc). That work was directly aimed at saving human lives with a significant secondary aim of saving wear on vehicles (in the mining industry drowsy drivers damage truck tires and that’s a huge business expense).

There are many applications of ML in medical research such as recognising cancer cells in tissue samples.

There are many less important uses for ML systems, such as recognising different types of pastries to correctly bill bakery customers – technology that was apparently repurposed for recognising cancer cells.

The ability to recognise objects in photos is useful. It can be used for people who want to learn about random objects they see and could be used for helping young children learn about their environment. It also has some potential for assistance for visually impaired people, it wouldn’t be good for safety critical systems (don’t cross a road because a ML system says there are no cars coming) but could be useful for identifying objects (is this a lemon or a lime). The Humane AI pin had some real potential to do good things but there wasn’t a suitable business model [2], I think that someone will develop similar technology in a useful way eventually.

Even without trying to do what the Humane AI Pin attempted, there are many ways for ML based systems to assist phone and PC use.

ML systems allow analysing large quantities of data and giving information that may be correct. When used by a human who knows how to recognise good answers this can be an efficient way of solving problems. I personally have solved many computer problems with the help of LLM systems while skipping over many results that were obviously wrong to me. I believe that any expert in any field that is covered in the LLM input data could find some benefits from getting suggestions from an LLM. It won’t necessarily allow them to solve problems that they couldn’t solve without it but it can provide them with a set of obviously wrong answers mixed in with some useful tips about where to look for the right answers.

Jobs and Politics

Noema Magazine has an insightful article about how “AI” can allow different models of work which can enlarge the middle class [3].

I don’t think it’s reasonable to expect ML systems to make as much impact on society as the industrial revolution, and the agricultural revolutions which took society from more than 90% farm workers to less than 5%. That doesn’t mean everything will be fine but it is something that can seem OK after the changes have happened. I’m not saying “apart from the death and destruction everything will be good”, the death and destruction are optional. Improvements in manufacturing and farming didn’t have to involve poverty and death for many people, improvements to agriculture didn’t have to involve overcrowding and death from disease. This was an issue of political decisions that were made.

The Real Problems of ML

Political decisions that are being made now have the aim of making the rich even richer and leaving more people in poverty and in many cases dying due to being unable to afford healthcare. The ML systems that aim to facilitate such things haven’t been as successful as evil people have hoped but it will happen and we need appropriate legislation if we aren’t going to have revolutions.

There are documented cases of suicide being inspired by Chat GPT systems [4]. There have been people inspired towards murder by ChatGPT systems but AFAIK no-one has actually succeeded in such a crime yet. There are serious issues that need to be addressed with the technology and with legal constraints about how people may use it. It’s interesting to consider the possible uses of ChatGPT systems for providing suggestions to a psychologist, maybe ChatGPT systems could be used to alleviate mental health problems.

The cases of LLM systems being used for cheating on assignments etc isn’t a real issue. People have been cheating on assignments since organised education was invented.

There is a real problem of ML systems based on biased input data that issue decisions that are the average of the bigotry of the people who provided input. That isn’t going to be worse than the current situation of bigoted humans making decisions based on hate and preconceptions but it will be more insidious. It is possible to search for that so for example a bank could test it’s mortgage approval ML system by changing one factor at a time (name, gender, age, address, etc) and see if it changes the answer. If it turns out that the ML system is biased on names then the input data could have names removed. If it turns out to be biased about address then there could be weights put in to oppose that.

For a long time there has been excessive trust in computers. Computers aren’t magic they just do maths really fast and implement choices based on the work of programmers – who have all the failings of other humans. Excessive trust in a rule based system is less risky than excessive trust in a ML system where no-one really knows why it makes the decisions it makes.

Self driving cars kill people, this is the truth that Tesla stock holders don’t want people to know.

Companies that try to automate everything with “AI” are going to be in for some nasty surprises. Getting computers to do everything that humans do in any job is going to be a large portion of an actual intelligent computer which if it is achieved will raise an entirely different set of problems.

I’ve previously blogged about ML Security [5]. I don’t think this will be any worse than all the other computer security problems in the long term, although it will be more insidious.

How Will It Go?

Companies spending billions of dollars without firm plans for how to make money are going to go bankrupt no matter what business they are in. Companies like Google and Microsoft can waste some billions of dollars on AI Chat systems and still keep going as successful businesses. Companies like OpenAI that do nothing other than such chat systems won’t go well. But their assets can be used by new companies when sold at less than 10% the purchase price.

Companies like NVidia that have high stock prices based on the supposed ongoing growth in use of their hardware will have their stock prices crash. But the new technology they develop will be used by other people for other purposes. If hospitals can get cheap diagnostic ML systems because of unreasonable investment into “AI” then that could be a win for humanity.

Companies that bet their entire business on AI even when it’s not necessarily their core business (as Tesla has done with self driving) will have their stock price crash dramatically at a minimum and have the possibility of bankruptcy. Having Tesla go bankrupt is definitely better than having people try to use them as self driving cars.

11:49

Grrl Power #1370 – Definitely no but maybe [Grrl Power]

“But…” You have a spaceship and we want to continue to have access to a spaceship, so…

That’s the real subtext of whatever Faulk is going to say on the next page. “Please let us continue to use your stuff which would take Earth 200 years* of concerted effort otherwise. Also your incredible medical technology and space pornography.” Like I said, subtext.

It’s still a bad idea for a lot of reasons. Throwing Sydney into the mix does offer a solution to the biggest problem, but still adds to the list of bad things that can go badly if something bad happens.

The first time Sydney found herself out amongst the general galactic population, nobody knew her orbs were significant. On a station where you can buy holographic wings, floating glowy things hardly stand out. But now it’s known that her orbs are known about. Sure, people claim to find Nth tech all the time, but the payoff if it’s real is enough for alien governments and other organizations to take interest in rumors and potential scams.

* Predicting what technology will look like in the future is something that most people are really bad at. I hate it when movies show some futuristic cityscape with flying cars and the info-text pops up and says “In the amazing year 2019!” Seriously, Blade Runner with humanoid… bioroids (?) and flying cars and pyramidal buildings 16 square blocks at the base, takes place in 2019. I mean, the movie was made in 1982, but that’s still only 37 years to transform entire city skylines, invent flying cars, and oh, Roy said something about seeing “Attack ships on fire off the shoulder of Orion…” If he was being literal, then the stars that form the constellation Orion’s shoulders are Bellatrix, which is 250 light years away, or Betelgeuse, which is… uh… hard to measure for reasons, and is between 400 and 550 light years away. Which means within 37 years of the movie coming out, when the pinnacle of home computing power was the Commodore 64 or the Apple IIe, (both of which had CPUs that ran at 1.023 MHz, BTW) the writers thought we’d invent some pretty fucking impressive warp travel.

Unless they wanted someone who was alive when the movie came out to appear as an older person in the movie, like some expository news cast saying “Bill Gates turned 73 today…” or something like that, there is NO REASON not to say that movie takes place in 2119. No one seeing that movie in the theater would be alive in 2119 to complain about it like I am now.

My point here is, could Earth make a warp capable spaceship in 200 years? Who the hell knows? Obviously it depends on if warp travel is even possible and what is required to achieve it. If you need to set up an orbital facility in low orbit of a neutron star in order to produce FTL-onium, then it might take us 4,000 years to make the first one, because it’ll take a long ass time to build that first factory. (Apparently the closest neutron star is 400 light years away, so it would actually probably take closer to 40,000 years to get there with conventional propulsion.) On the other hand, if you just need a shitload of energy to throw at the problem and that lets you Alcubierre the problem, then… maybe? Honestly, the rest of the ship isn’t so challenging. Once you have enough energy to not have to worry about barely being able to lift your own fuel into space with you, then you could make something that looked like a cool space ship covered in armor instead of all of our space stuff now, which looks like tinker toys covered in foil and quilted blankets.

So in the Grrl-verse, with Earth’s supers, yeah, you could probably build everything but the warp drive on Earth and have someone like Maxima carry it into space. Or have her carry a bunch of shit into space to be assembled as a factory, which would put together components or whatever. The superpowers will give Earth a massive timetable advantage when it comes to spacetravel. Getting warp engines will probably still be expensive though.


The vote incentive is finally done!

The update to the TWC image is pretty minor, but the Patreon version has the bonus comic as well as nude versions. I will strive to make the next one more timely.

 

 

 


Double res version will be posted over at Patreon. Feel free to contribute as much as you like.

10:56

Which shelf is yours? [Seth's Blog]

A friend sorts his records in an interesting way: not by name or genre, but by which musicians are friends with each other. That means some shelves are very crowded, and I’m imagining a few notorious artists have plenty of room all to themselves.

It’s possible that we sort the folks in our lives this way as well. The people who can be counted on, who are part of a larger circle, who are dynamic or interesting or selfish… lots of shelves, available to anyone willing to put in the work (or not).

10:35

Pluralistic: Trump's not gonna protect workers from forced labor (03 Jul 2025) [Pluralistic: Daily links from Cory Doctorow]


Today's links



A kneeling figure, shackled hand-and-foot with ball-and-chains at his ankles. His face is that of a turn-of-the-century newsie, grinning broadly under a torn cloth cap. Behind him is a heavily halftoned neon HELP WANTED sign, askew over a indistinct black hellscape ganked from the third panel of Boschs's 'Garden of Earthly Delights.'

Trump's not gonna protect workers from forced labor (permalink)

As fascism burns across America, it's important to remember that Trump and his policies are not popular. Sure, the racism and cruelty excites a minority of (very broken) people, but every component of the Trump agenda is extremely unpopular with the American people, from tax cuts for billionaires to kidnapping our neighbors and shipping them to concentration camps.

Keeping this fact in mind is essential if we are to nurture hope's embers, and fan them into the flames of change. Trumpism is a coalition of people who hate each other, who agree on almost nothing, whose fracture lines are one deft tap away from shattering:

https://pluralistic.net/2024/07/14/fracture-lines/#disassembly-manual

The vast unpopularity of Trumpism presents endless opportunities for breaking off parts of his coalition. Take noncompete "agreements": contractual clauses that ban workers from taking a job with any of their employers' competitors for years. One in 18 Americans has been captured by a noncompete, and the median noncompete victim is a minimum-wage fast-food worker whose small business tyrant boss wants to be sure that she doesn't quit working the register at Wendy's and start making $0.25/hour more flipping burgers at McDonald's.

The story of noncompetes is bullshit from top to bottom. The argument goes, "Your boss invests heavily in training you, and lets you in on all his valuable trade-secrets. When you walk out the door and go to work for a competitor, you're stealing all that training and knowledge. Without noncompetes, no boss will invest in the knowledge-intensive industries that are the future of our economy."

Now, like I said, the vast majority of people under noncompetes are working low-waged, menial jobs with little to no training, and no proprietary trade secrets to speak of. Which makes sense: workers with less bargaining power end up signing worse contracts. That's half the case against noncompetes.

Here's the other half: the most IP-intensive, profitable, knowledge-based industries in America operate without any noncompetes. California's state constitution bans noncompetes, which means that every worker in Hollywood and Silicon Valley is free to quit their job and walk across the street and join a rival.

If Hollywood and tech are examples of industries that "can't attract investment," then we should be shooting for every sector of the American economy to be so starved for capital. Silicon Valley's origin story is based on the ability of key workers at knowledge-intensive firms to quit their jobs and go to work for a direct competitor: the first Silicon Valley company was Shockley Semiconductors, founded by William Shockley, who won the Nobel Prize for inventing silicon transistors.

Shockley literally put the "silicon" in Silicon Valley, but he never shipped a working chip, because he was a deranged, paranoid eugenicist who ran such a dysfunctional company that eight of his top engineers quit to found a rival company, Fairchild Semiconductor. Then two of the "Traitorous Eight" quit the Fairchild to start Intel, and the year after, another Fairchild employee quit to start AMD:

https://pluralistic.net/2021/10/24/the-traitorous-eight-and-the-battle-of-germanium-valley/

This never stopped. Woz quit HP and Jobs quit Atari to start Apple and the tradition of extremely well-capitalized companies being founded by key employees who quit market-leading firms to compete with their old bosses continues to this day. There are many things we can say about AI, but no one will claim that AI companies – especially not those in California, where noncompetes are banned – have trouble attracting investment. Half of the leading AI companies were founded by people who couldn't stand working for Sam Altman at Openai and quit to found a competitor. Just last week, Altman flipped out because Mark Zuckerberg poached his key scientists to work on competing products at Meta:

https://fortune.com/2025/06/28/meta-four-openai-researchers-superintelligence-team-ai-talent-competition/

Knowledge-intensive industries are provably compatible with a system of free labor where workers can work for anyone they want. You know who understands this? The lawyers who draw up employment contracts with noncompete clauses in them: the American Bar Association bans noncompetes for lawyers! Every law firm in America operates without noncompetes!

Everyone hates noncompetes. They are bullshit, and only get worse with time, as the largest companies in America metastasize into sprawling conglomerates, they compete with everyone. Who isn't a competitor of Amazon's?

https://pluralistic.net/2022/02/02/its-the-economy-stupid/#neofeudal

Biden's antitrust enforcers hated noncompetes, too. Former FTC chair Lina Khan held listening tours and solicited comments to hear workers stories about noncompetes, developing a record that she used to create a rule that banned noncompetes nationwide:

https://pluralistic.net/2024/04/25/capri-v-tapestry/#aiming-at-dollars-not-men

America's oligarchs weren't happy. They sued to overturn the rule, and got a nationwide injunction (you know, those things that Trump's illegitimate Supreme Court claims are unenforceable) that suspended the FTC rule pending a full hearing.

It's clear that Trump's FTC is going to walk away from this fight and let the rule die. Trumpism is wildly unpopular, and this is no exception. Americans overwhelmingly support banning noncompetes, but Trump's richest donors are terrified of another Great Resignation and want to keep us indentured to their shitty companies, so Trump's FTC will sell us all out.

But that's not the end of things. As David Dayen writes for The American Prospect, states and local governments can pass their own noncompete bans, and they are:

https://prospect.org/labor/2025-07-02-ftc-noncompete-state-regulation-workers-wages/

Take NYC mayor-in-waiting Zohran Mamdani: unlike Trump (and the Democratic Party's billionaire wing), Mamdani campaigned by offering to create policies that are popular, including a ban on noncompetes. New York City has two distinct groups of workers who are screwed over by noncompetes. One of those groups is Wall Street finance bros, who work for some of the most legendarily toxic assholes to ever draw breath, and are overwhelming bound by noncompetes that will all become null and void the day Mamdani dons his sash.

The other group of workers Mamdani will liberate are those at the very bottom of the income distribution, from fast food workers to gig workers to doormen, who are victims of some of the dirtiest noncompete clauses in America, including "bondage fees":

https://pluralistic.net/2023/04/21/bondage-fees/#doorman-building

Big cities are filled with workers who are getting screwed by noncompetes and every city government has it in their power to liberate every one of those workers (who are also voters).

States can do even better. There are already four states that ban noncompetes, two of them blood red: California, Minnesota, North Dakota, and Oklahoma. Other states place significant restrictions on noncompetes, including Washington, Colorado, Illinois, Virginia, Maryland, Rhode Island, New Hampshire, and Maine. Nevada bans noncompetes for hourly workers, Idaho only allows them for "key employees"; Louisiana limits noncompetes to two years, and NJ bans noncompetes for domestic workers.

Up and down the country, in states blue and red, noncompetes are unpopular, and banning noncompetes is popular:

https://www.ipsos.com/en-us/majority-americans-support-ftc-ruling-would-ban-non-compete-agreements

Oregon just banned noncompetes for doctors and other health workers, as part of a sweeping, bipartisan law that banned the "corporate practice of medicine":

https://pluralistic.net/2025/06/20/the-doctor-will-gouge-you-now/#states-rights

Oregon's in good company: noncompetes are banned in the health sector in 32 states, including Arkansas, Indiana and Colorado.

Lina Khan's FTC developed an irrefutable evidentiary record about the abusive nature of noncompetes, proving that industries can attract capital and field successful companies without them. States have it in their power to step in where Trump has betrayed American workers. This isn't the most efficient way to protect workers – that would be a federal ban on noncompetes – but it will still get the job done, and it will weaken the Trump coalition, which is barely holding together as it is.


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)

#15yrsago Futures for SF writers that aren’t the Singularity https://www.rudyrucker.com/blog/2008/08/25/fresh-sf-futures/

#10yrsago Secret court will let NSA do mass surveillance for another six months https://arstechnica.com/tech-policy/2015/06/secret-us-court-allows-resumption-of-bulk-phone-metadata-spying/

#10yrsago Bigoted officials: First Amendment means we don’t have to issue marriage licenses to same-sex couples https://edition.cnn.com/2015/06/30/us/same-sex-marriage-supreme-court-ruling-holdouts/index.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+rss%2Fcnn_topstories+(RSS%3A+CNN+-+Top+Stories)

#10yrsago McKinney, TX wants $79K to retreive emails of the cop who tackled bikini-clad teen https://www.techdirt.com/2015/06/30/city-claims-it-will-take-9000-hours-79000-to-fulfill-gawkers-request-emails-related-to-abusive-police-officer/

#10yrsago We’ve evolved to disbelieve evolution https://www.npr.org/sections/13.7/2015/06/29/418289762/don-t-believe-in-evolution-try-thinking-harder

#10yrsago US Customs and Border Protection: America’s largest, most corrupt police force https://www.latimes.com/nation/la-na-border-patrol-20150630-story.html#page=1

#5yrsago Snowden on Little Brother https://pluralistic.net/2020/07/01/bossware/#omnibus

#5yrsago Sun Ra's syllabus https://pluralistic.net/2020/07/01/bossware/#sun-ra

#5yrsago Invigilation CEO doxes student https://pluralistic.net/2020/07/01/bossware/#moral-exemplar

#5yrsago Big Cop's corporate armorers https://pluralistic.net/2020/07/01/bossware/#charitable-laundering

#5yrsago Bossware https://pluralistic.net/2020/07/01/bossware/#bossware

#5yrsago EFF on EU interoperability policy https://pluralistic.net/2020/07/01/bossware/#eu-interop

#1yrago Austin Grossman's 'Fight Me' https://pluralistic.net/2024/07/01/the-big-genx-chill/#im-super-thanks-for-asking


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)

  • Uncanny Valley: A limited edition collection of the collages I create for Pluralistic, self-published, September 2025
  • Enshittification: Why Everything Suddenly Got Worse and What to Do About It, Farrar, Straus, Giroux, October 7 2025
    https://us.macmillan.com/books/9780374619329/enshittification/

  • Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026

  • Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026

  • The Memex Method, Farrar, Straus, Giroux, 2026



Colophon (permalink)

Today's top sources:

Currently writing:

  • 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

09:07

Malware in Proprietary Software - June 2025 Additions [Planet GNU]

The initial injustice of proprietary software often leads to further injustices: malicious functionalities.

The introduction of unjust techniques in nonfree software, such as back doors, DRM, tethering, and others, has become ever more frequent. Nowadays, it is standard practice.

We at the GNU Project show examples of malware that has been introduced in a wide variety of products and dis-services people use everyday, and of companies that make use of these techniques.

Here are our latest additions

June 2025

Amazon's Software Is Malware


The server will figure out what (if anything) someone asked it to do.

What else will it do with that recording? There are no limits except management's will. It might save some of the utterances it hears, and present them years later to the political police.

Proprietary Surveillance

  • Researchers discovered that the Meta Pixel and Yandex Metrica trackers, which are embedded in many websites, have been spying on behalf of the native Meta and Yandex Android apps respectively, by taking advantage of security flaws in the Android API. When the user of an Android device accessed these pages with a browser such as Chrome, the trackers made all browsing data available to the native apps running in the background. The data could then be correlated to the user account or the Android Advertising ID, i.e. de-anonymized.


Although Meta and Yandex have discontinued this type of spying, they may resume it in the future, possibly with other methods, and we don't know which other companies might follow their example. A foolproof way to avoid this sort of tracking is to refrain from installing any proprietary apps on a “smart”phone, especially if the app has a way of identifying users. To avoid proprietary apps, we recommend using the F-Droid store instead of Google Play.

Since most trackers, including the Meta Pixel and Yandex Metrica, are nonfree JavaScript programs, it is also good practice to prevent nonfree JavaScript from running in the browser, with an add-on such as GNU LibreJS.

Malware in Games

Of course, gamers hate Denuvo. But hate is useless. They should go one step further, and stop buying games that use DRM.

02:21

[$] LWN.net Weekly Edition for July 3, 2025 [LWN.net]

Inside this week's LWN.net Weekly Edition:

  • Front: Kernel features from Python; i686 in Fedora; Kernel development with LLMs; Rust drivers; Load balancing with machine learning; Transparent huge pages.
  • Briefs: Bcachefs removal; Coccinelle for Rust; Netdev Foundation; Oracle Linux 10; GNU HHIS 5.0; Rust 1.88.0; Quotes; ...
  • Announcements: Newsletters, conferences, security updates, patches, and more.

02:14

Hair And Makeup [QC RSS]

that's just, like, your opinion, man

01:56

July Things to Do: This & That [The Stranger]

The best community events in July. by Julianne Bell

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

Tacoma Pride Block Party 2025

July 12

Drag superstar, singer-songwriter, businesswoman, TV personality, makeup artist, YouTuber, and real-life Barbie Trixie Mattel is coming to Tacoma this month, in case you didn’t hear. I know everyone is asking: How did this Tacoma Pride party book one of the most in-demand drag queens in the game? Well, they got her the month after Pride, when her schedule is clear. As far as I’m concerned, every month is Pride month, so I won’t mind throwing on something sparkly and trekking down to Tacoma to see Trixie’s DJ set along with local gems like Stacey Starstruck, Pupusa, Fabi, Slutashia, Anita Spritzer, Rowan Ruthless, Amora Namor, and more. (The Mix, 2 pm, 21+) AUDREY VANN

Fae Fest

July 12–13

There’s something distinctly fruity about the glorious pomp and pageantry of the Middle Ages, which is why this Ren Faire–themed festival produced by and for queers makes so much sense. The event launched last summer, and this year, the festivities have expanded to two days of medieval debauchery. Lace up your corset, throw on some chain mail, strap on some glittery fairy wings, or dress in any other way that tickles your fancy, then peruse a selection of handmade art and clothing from queer vendors and witness some fabulous performances. The tavern keepers at Obec Brewing will keep the ale flowing—sorry, giant chicken leg not included. (Obec Brewing, 3–8 pm, free, 21+) JULIANNE BELL

Heroines of Resistance: Women as Anti-Fascist Militants

Mondays through July 14

This free feminist discussion group will explore women in history who have played vital roles in fighting fascism. Organized by the long-running socialist feminist activist organization Radical Women, this is not only a powerful way to harness hope and gain inspiration to resist under the current administration, but also an opportunity to meet like-minded people in the community. Reading packets will be available to purchase for $10 at each session. (New Freeway Hall, 6:30 pm) AUDREY VANN

Urban Craft Uprising Summer Show

July 26–27

Urban Craft Uprising was founded as a small 50-booth holiday show in the winter of 2005 to showcase wares from independent crafters, artists, and designers and to provide an intentional alternative to big-box stores and mass-produced goods. Since then, it’s blossomed into the largest indie craft event in the Pacific Northwest. Stop by this free two-day summer edition to check out jewelry, housewares, clothing, toys, bath and body products, candles, and more from more than 130 vendors, as well as food trucks to fuel your browsing. A designated area for the show’s “Sprouts” program will also be dedicated to “emerging small businesses with a focus on LGBTQ+, BIPOC, veteran and alter-abled vendors.” (Magnuson Park Hangar 30, 11 am–5 pm, free, all ages) JULIANNE BELL

More

Drag Bingo with Sativa Every Friday, Rough & Tumble, 7 pm

Seattle Mariners 2025 Home Games Through Sept 28, T-Mobile Park

Seattle Reign FC 2025 Home Games Through Oct 17, Lumen Field

Sound Bath with Semi Woo Wednesdays from July 2–Sept 24, 7:15 pm, free

An Interactive Evening Suitable for Introverts July 11, Fremont Abbey, 5 pm

An Evening with Ken Burns July 14, McCaw Hall, 6:30 pm

Hugo House Presents: Writer Speed Friending July 16, Lapis Theater, 6 pm

Bridging Movements: On Gender, Race, and Collective Liberation July 31, The Wyncote NW Forum, 5:30 pm, free

The Washington Midsummer Renaissance Faire Saturdays & Sundays from July 19–Aug 17, Sky Meadows Park

Early Warnings

Monster Jam Sept 19–21, Tacoma Dome

July Things to Do: Food [The Stranger]

July's best food events. by Julianne Bell

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

Ballard SeafoodFest

July 11–13

Originally started as a celebration of the neighborhood’s fishing industry in 1974, the Ballard SeafoodFest has expanded over the years to include an alder-smoked salmon barbecue, art exhibits, a craft beer garden, artisan craft vendors, a skateboarding showcase, kids’ activities, and live music. This year’s music lineup features “ugly pop” sibling group Skating Polly, Sarah Tudzin’s self-described “tenderpunk” project Illuminati Hotties, psych rockers Spirit Award, and soulful singer Sir Woman, among many others. Masochists can enroll in the lutefisk eating contest, an annual competition to see who can scarf down the most of the salty, gelatinous fish. (NW Market St and Ballard Ave NW, times vary, free, all ages) JULIANNE BELL

Seventh Annual Summer School Brewfest

July 26

School may be out for summer, but you can seek out some extracurricular edification at the 1930s junior-high-turned-adult-playground Anderson School’s all-ages beer festival, with 32 handcrafted ales and ciders from Washington and Oregon, barbecue food specials, and whiskey tastings. Plus, check out live music performances from the rock cover band On the Rocks and alternative country group Salt Pine, and roam the campus’ halls, which include pinball and a swimming pool. Your ticket gets you 10 tasting tickets and a keepsake festival glass. (Haynes’ Hall, 1–7 pm, all ages) JULIANNE BELL

Vashon Island Strawberry Festival

July 18–20

There are few joys in this fucked-up world as unalloyed as biting into the first red, ripe, juicy strawberry of summer. Add the quaint, idyllic island community vibes of Vashon to that mix, and you’ve got yourself a winning formula. Since the early 1900s, Vashon Island has hosted an annual festival to commemorate the island’s history as a hub for strawberry production, and it’s since grown into a cherished tradition full of parades, live music, a classic car show, kids’ activities, and local vendor booths. It’s volunteer-run and family-friendly, as well as an ideal excuse to escape from the city for a bit via ferry ride and microdose being on vacation. (Vashon Island) JULIANNE BELL

Bite of Seattle

July 25–27

Seattle boasts plenty of food and drink festivals year-round, but Bite of Seattle—billed as “Seattle’s original and largest food and beverage showcase” and claiming to draw 355,000 guests each year—is the most well-known gluttonous gathering by far, having been in business since 1982. Look forward to upwards of 300 food vendors, as well as beer and wine gardens, retail vendors, cider tastings, kids’ activities, live cooking demos, and more than 65 musical performers. Artists include punk-infused instrumentalists mega cat, powerhouse vocalist Shaina Shepherd, rock-and-rollers the Moondoggies, rapper Oblé Reed, and “funk juggernaut” Eldridge Gravy & the Court Supreme. (Seattle Center, 10 am– 9 pm Friday through Saturday & 10 am–8 pm on Sunday, free, all ages) JULIANNE BELL

More

Ballard Farmers Market Every Sunday, Ballard Ave, 9 am–2 pm, free

Capitol Hill Farmers Market Every Sunday, E Denny Way and Nagle Pl, 11 am–3 pm, free

West Seattle Farmers Market Every Sunday, Alaska Junction, 10 am–2 pm, free

Fremont Sunday Market Every Sunday, Evanston Ave N and N 34th St, 10 am–4 pm, free

Tasting Notes II with Kenji López-Alt and James Ehnes July 25, Benaroya Hall, 7 pm

Early Warnings

Samin Nosrat Oct 14, Benaroya Hall

July Things to Do: Film [The Stranger]

Film screenings and events you can't miss in July. by Audrey Vann

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

‘Art for Everybody’

July 3–7

Thomas Kinkade’s whimsical landscapes of fairy cottages, Christmas villages, and enchanted gardens turned him into one of the most successful painters of all time, while at the same time establishing for him a reputation as an unabashed capitalist and sellout. Documentarian Miranda Yousef’s film Art for Everybody explores the troubled man behind the bucolic images through the vault of uncharacteristically dark paintings he left behind—Kinkade died of a lethal drug and alcohol pairing in 2012. The film reevaluates the infamous kitsch creator as not just a businessman, but a performance artist who profited off an American society starved for unrealistic beauty and idealism. The film will be presented by filmmaker Miranda Yousef and the artist’s daughter, Chandler Kinkade. (SIFF Film Center, various times) AUDREY VANN

2025 Queer and Trans Film Festival

July 10–12

Three Dollar Bill Cinema’s annual film festival is celebrating “30 years of queer cinema and 20 years of trans storytelling” this year with “iconic shorts and features from festivals past, a brand-new lineup of trans-made and trans-led short films, and a spotlight on the brilliant local voices that shaped our scene.” I’m particularly excited to see some of my favorite LGBTQ classics, like Saving Face, Portrait of a Lady on Fire, and Tangerine on the lineup, as well as lesser-known throwbacks like the 2008 teen fantasy musical Were the World Mine (in which a high school boy casts a spell to turn his entire small town gay) and the 2001 transmasc road trip buddy movie By Hook or By Crook (featuring a cameo from Joan Jett!). (Broadway Performance Hall and Erickson Theater, various times) JULIANNE BELL

‘Showgirls’

July 13

What can I say about Paul Verhoeven’s landmark 1995 erotic drama that hasn’t already been said? That I felt like a changed person after watching it for the first time? That it is tacky and absurd to a degree approaching transcendence? That never in my 34 years have I seen anything quite like Gina Gershon flirting with Elizabeth Berkley by talking about eating doggy chow? Whether you love or hate the critically panned camp classic, I’m willing to bet that you’re probably not indifferent. (I’m solidly in the love camp myself, in case you couldn’t guess.) See the psychosexual NC-17 sensation (and its bevy of naked breasts) on the big screen at Here-After. (Here-After, 7 pm, 21+) JULIANNE BELL

‘Little Darlings’

July 29

I watched this underrated ’80s teen sex dramedy as a high schooler and almost never hear people talking about it, so I’m thrilled to learn that Here-After will be screening it. At the all-girls summer camp Camp Little Wolf, tough girl Angel and sheltered rich girl Ferris clash upon meeting and make a bet to see who can lose their virginity first. Roger Ebert wrote that the movie “somehow does succeed in treating the awesome and scary subject of sexual initiation with some of the dignity it deserves.” I love the queer subtext, the gay-as-hell vintage denim and shag haircuts, and the fact that the film allows its teen girl subjects to be horny and messy in a way they aren’t often permitted to be. Keep your eyes peeled for a young Matt Dillon and 13-year-old Cynthia Nixon’s film debut as the camp’s resident flower child, Sunshine. (Here-After, 7:30 pm, 21+) JULIANNE BELL

More

To Live Is to Dream: A Northwest Tribute to David Lynch Through August 10, various locations

Salute-vision: Top Gun July 4, Central Cinema, 7 pm

Unstoppable 2025 Summer Tour July 6, SIFF Cinema Uptown, 4:30 pm

Good Garbage: Deep Blue Sea July 9, Here-After, 6 pm, 21+

Epic Movie Night: Casino July 10, Central Cinema, 8 pm

Sorry, Baby Opens July 10, SIFF Cinema Uptown

The Cartoons of Max Fleischer July 11–24, Northwest Film Forum, various times

The Sandlot Special Event with the Cast July 11, Neptune Theatre, 7 pm

DreamWorks Animation in Concert July 11–13, Benaroya Hall, various times

Hecklevision: Stargate July 13, Central Cinema, 9:45 pm

Hecklevision: The Mummy July 14, Central Cinema, 7 pm

Baron von Terror Presents: The Blob July 17, Central Cinema, 8 pm

Mourning Sickness with Miss Monday Mourning: Barbie July 20, Northwest Film Forum, 8 pm

SIFF ‘n’ Stitch: Little Miss Sunshine July 20, SIFF Cinema Uptown, noon

Koyaanisqatsi: Live with Philip Glass Ensemble July 22, Benaroya Hall, 8 pm

Children’s Film Festival Seattle 2025 July 23–27, Northwest Film Forum, various times

Art House Theater Day: Tomboy and Tangerine July 24, SIFF Cinema Uptown, 5:30 pm and 7:45 pm

Ed Wood: Made in Hollywood USA with Will Sloan July 25, The Beacon, 7:30 pm

Movies at the Mural Every Friday, July 25–August 22, Mural Amphitheatre, 9 pm

She/Her Fest July 26, SIFF Film Center, 7 pm

Unstreamable: Secret Screening #2 July 31, SIFF Cinema Uptown, 7:30 pm

Early Warnings

CatVideoFest 2025 Aug 8–10, SIFF Cinema Uptown, various times

Silent Movie Mondays: The Freshman Aug 25, Paramount Theatre, 7 pm, all ages

L.A. Noir: Shadows in Paradise Sept 10–Nov 12, SIFF Cinema Uptown

Twilight in Concert Sept 13, Paramount Theatre, 2 pm and 7:30 pm, all ages

2025 SIFF Marquee Gala Sept 18, Fremont Studios

20th Tasveer Film Festival & Market Oct 7–12, Tasveer Film Center

The Rocky Horror Picture Show—50th Anniversary Oct 28, Paramount Theatre, 7:30 pm

July Things to Do: Performance [The Stranger]

All the theater, dance, and comedy performances you can't miss in July. by Audrey Vann

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

The Vanishing Seattle Variety Show

July 16

Vanishing Seattle is a social media project that began in 2016 to keep track of our dearly departed buildings and businesses while also offering a place for the community to share photos and memories. Since its start in 2016, the project has expanded to a series of documentaries, a book, locally inspired merchandise, and now, a variety show. This one-of-a-kind event will blend stand-up comedy, storytelling, drag, film, and more, paying homage to some of Seattle’s most beloved relics of the past—I’m talking about the Lusty Lady marquee, Lincoln’s Toe Truck, and the dinner mints at Mama’s Mexican Kitchen. Vanishing Seattle founder Cynthia Brothers will host alongside local comic Shannon Koyano. Plus, this is a great opportunity to see the Crocodile’s We Were Here exhibit, which displays music venue signs from Seattle’s past. (Here-After, 7 pm, 21+) AUDREY VANN

Kate Berlant

July 25

You might know comedian, actress, and LA cool girl Kate Berlant from her appearances in movies like Sorry  Bother You and Don’t Worry Darling, her role in Amazon Prime’s A League of Their Own reboot, her Bo Burnham–directed special Cinnamon in the Wind, her frequent collaborations with comedy partner John Early, or her existential wellness podcast Berlant & Novak (formerly Poog) with fellow comic Jacqueline Novak. (She’s booked and busy!) I was lucky enough to catch her critically acclaimed one-woman show KATE in New York and was delighted by her genius portrayal of an exaggeratedly egotistical character version of herself. Her eclectic comedy topics range from her upbringing as an only child to why it’s okay for women to shoplift beauty products. Get a glimpse of her absurdist style for yourself at this stand-up performance at the Neptune. (Neptune Theatre, 6 pm, all ages) JULIANNE BELL

Chris Fleming

July 27

From his depiction of the unhinged suburban housewife character Gayle Waters-Waters to viral songs like “I’m Afraid to Talk to Men,” comedian and self-described “showpig” Chris Fleming has a hilariously unique perspective on the world. I’m dazzled by his laser-sharp, hyper-specific commentary on subjects as diverse as “the snacks at Trader Joe’s that only women can see,” model Emily Ratajkowski’s gigantic infant son, and the time his homophobic dad accidentally told a male soccer coach “I love you” on the phone. His character work is also unparalleled (see his impression of a gentle, timid Sufjan Stevens startled by a Kate Bush video for proof). Step into his bizarrely brilliant mind when he stops at the Moore for his summer 2025 tour. (Moore Theatre, 4 pm & 8 pm, all ages) JULIANNE BELL

Bridget Everett

Aug 3

Before Bridget Everett was known as the star of HBO’s heartwarming comedy series Somebody Somewhere, she was known as New York City’s alt-cabaret provocateur, regularly performing at Joe’s Pub. At these performances, Everett would stand on tables and sing her heart out alongside her backing band, the Tender Moments—made up of the Beastie Boys’ Adam Horovitz and the Julie Ruin’s Carmine Covelli. Now, the group is finally bringing the perennially sold-out, cult-favored cabaret show to the West Coast. If you prefer not to be serenaded, touched, flashed, or handed the microphone during comedy shows, I recommend avoiding the first 30 rows. (Moore Theatre, 8 pm, all ages) AUDREY VANN

More

Grindhaus: Sasha Colby, Bosco, and More July 4–5, The Crocodile, 10 pm, 21+

Dinosaur–Live! July 9, Neptune Theatre, 8 pm,
all ages

Birds of Play with Tanya Gagné July 10–19, Seattle Public Theater, various times

Solomon Georgio Jul 12, Here-After, 7 pm & 9 pm, 6 pm, 21+

Pod Meets World July 13, Neptune Theatre, 8 pm, all ages

Seattle Festival of Dance + Improvisation July 13–Aug 10, various locations

Bigger! with Brennan and Izzy July 18, 7 & 9:30 pm, Benaroya Hall

Ron Funches July 25–27, Emerald City Comedy Club, 21+

Nori Reed July 26, Here-After, 6 pm & 8 pm, 21+

Glory Hole: ReBirthday July 26, The Wyncote NW Forum, 9 pm

& Juliet July 29–Aug 3, Paramount Theatre, various times, all ages

James Austin Johnson Aug 2, The Crocodile, 6 pm, 21+

After Midnight Aug 5–Aug 24, 5th Avenue Theatre, various times, all ages

Parable of Kinoptics by D. Sabela Grimes Aug 9, 12th Ave Arts, 7:30 pm

Early Warnings

Shadows Under the Market Aug 1–9, Seattle Public Theater, various times, all ages

Steve Martin & Martin Short Aug 22–23, Paramount Theatre, various times, all ages

Jurassic Parking Lot Aug 22–Sept 14, Seattle Public Theater, various showtimes, all ages with mature content

The Disabled List Aug 23, Northwest Film Forum

A Play That Goes Wrong Aug 28–Sept 28, Seattle Rep, various times, all ages

Taylor Tomlinson Sep 5–7, McCaw Hall, various times, all ages

Fancy Dancer Sept 18–Nov 2, Seattle Rep, various times, all ages

Nikki Glaser Sept 12–13, McCaw Hall, 7 pm, all ages

Suffs Sept 13–27, 5th Avenue Theatre, various times, all ages

Some Like It Hot Sept 16–21, Paramount Theatre, all ages

An Enemy of the People Sept 20–Oct 5, ACT, various times, all ages

Pacific Northwest Ballet Presents: Jewels Sept 26–Oct 5, McCaw Hall, various times

Stereophonic Oct 7–12, Paramount Theatre, all ages

Lillian Hellman’s The Little Foxes Oct 15–Nov 2, Erickson Theatre, various times, 21+

Shrew Oct 18–Nov 2, ACT, various times, all ages

The Pirates of Penzance Oct 18–Nov 1, McCaw Hall

Chicago Oct 22–Nov 2, 5th Avenue Theatre, various times, all ages

Nate Bargatze Nov 6–7, Climate Pledge Arena, all ages, 7 pm

July Things to Do: Literature [The Stranger]

The best talks and literature events in July. by Megan Seling

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

Author Talk: Susana M. Morris with Brooke Bosley, ‘Positive Obsession: The Life and Times of Octavia E. Butler’

July 16

In a 1989 essay for Essence titled “Birth of a Writer,” the visionary writer Octavia Butler created the term “positive obsession” to describe channeling a deep, unwavering passion into a specific objective against all obstacles. Butler herself possessed this relentless drive for success, despite the resistance she faced as a young Black woman with financial hardships—have you ever seen her famous handwritten journal manifestation page in which she enumerates her goals to be a bestselling author? In her new biography, Positive Obsession: The Life and Times of Octavia E. Butler, author and scholar Susana M. Morris takes us into the legendary dreamer’s lived experiences with interviews, letters, previously unpublished material, and more. She’ll be joined at this event by Afrofuturist and educator Brooke Bosley. (Third Place Books Lake Forest Park, 7 pm, free, all ages) JULIANNE BELL

Author Talk: Cassandra Khaw with Katee Robert, ‘The Library at Hellebore’

July 23

Last year, based on recommendations from the Seattle Public Library and Elliott Bay Book Company, I picked up Bram Stoker Award—winning author Cassandra Khaw’s novella The Salt Grows Heavy, a gothic retelling of The Little Mermaid featuring a murderous, flesh-eating siren and an androgynous plague doctor who join forces to take down a sinister death cult. The book was both eerie and sensual, so I’m excited for their newest release, The Library at Hellebore, a dark academia fantasy tale in which a group of students enrolled at a prestigious boarding school must team up to defend themselves from the cannibalistic faculty. New York Times bestselling erotic romance author Katee Robert will join Khaw in conversation. (Elliott Bay Book Company, 7 pm, free, all ages) JULIANNE BELL

Author Talk: Ken Jennings, ‘The Complete Kennections: 5,000 Questions in 1,000 Puzzles’

July 31

If you can’t get enough of brain-teasing games like the New York Times crossword, Wordle, and Connections, allow me to put you on to “Kennections.” Back in 2012, record-setting Jeopardy! GOAT and current host Ken Jennings created his own proprietary weekly trivia puzzle, which previously appeared in Parade and Mental Floss. It seems simple enough in theory, but is punishingly difficult in practice: answer five questions, the responses to which share a theme in common. (Example: feet, McDonald’s, fingerprints, and St. Louis are linked by all having arches.) Think you have what it takes? Jennings will celebrate the release of The Complete Kennections, which collects all of his past quizzes in one volume along with hundreds of new and updated ones, by dropping by Third Place Books for a talk, Q&A, and signing. (Third Place Books Lake Forest Park, 7 pm, all ages) JULIANNE BELL

More

Accidental Shepherd: How a California Girl Rescued an Ancient Mountain Farm in Norway by Liese Greensfelder July 2, Elliott Bay Book Company, 7 pm, free

The Connection Cure: The Prescriptive Power of Movement, Nature, Art, Service, and Belonging by Julia Hotz July 2, Third Place Books Lake Forest Park, 7 pm, free

A Pepper for Your Thoughts? by Howard Lev July 3, Elliott Bay Book Company, 8 pm, free

Situationship by E.M. Wilson July 3, Third Place Books Seward Park, 7 pm, free

Climate by Whitney Hanson July 9, Third Place Books Lake Forest Park, 7 pm, free

Crush: My Year as an Apprentice Winemaker by Nicholas O’Connell July 9, Elliott Bay Book
Company, 7 pm, free

The Buddhist Years: Collected Writings by Charles Shuttleworth July 10, Elliott Bay Book Company,
7 pm, free

Occupy Whiteness by Joaquín Zihuatanejo July 10, Third Place Books Ravenna, 7 pm, free

Overgrowth by Mira Grant July 10, Seattle Central Library, 7 pm, free

Spaces of Creative Resistance: Social Change Projects in Twenty-First-Century East Asia by Andrea Gevurtz Arai July 11, Elliott Bay Book Company, 7 pm, free

Hot Off the Press Book Fair July 12, Fantagraphics, 5 pm, free

Difficult Girls by Veronica Bane July 15, Third Place Books Lake Forest Park, 7 pm, free

Held Together: A Shared Memoir of Motherhood, Medicine, and Imperfect Love by Rebecca N. Thompson, MD July 15, Third Place Books Seward Park, 7 pm, free

The Way Around: A Field Guide to Going Nowhere by Nicholas Triolo with Ben Gibbard July 16, Elliott Bay Book Company, 7 pm, free

The Front Runner: The Life of Steve Prefontaine by Brendan O’Meara July 17, Elliott Bay Book Company, 7 pm, free

Coffeeshop in an Alternate Universe by CB Lee July 18, Third Place Books Ravenna, 7 pm, free

Girl in the Creek by Wendy N. Wagner July 21, Third Place Books Lake Forest Park, 7 pm, free

How Birds Fly by Peter Cavanagh July 22, Elliott Bay Book Company, 7 pm, free

The Lost and the Found: A True Story of Homelessness, Found Family, and Second Chances by Kevin Fagan July 24, Third Place Books Lake Forest Park, 7 pm, free

Lesser Known Monsters of the 21st Century by Kim Fu July 30, Seattle Central Library, 6:30 pm, free

Kuleana: A Story of Family, Land, and Legacy in Old Hawai’i by Sara Kehaulani Goo August 1, Elliott Bay Book Company, 7 pm, free

Tonight in Jungleland: The Making of Born to Run by Peter Ames Carlin with Cheryl Waters August 5, Third Place Books Seward Park, 7 pm, free

Early Warnings

Chuck Tingle Aug 20, Third Place Books Lake Forest Park, 7 pm, free

R.F. Kuang Sept 12, Town Hall Seattle, 7:30 pm

David Sedaris Nov 16, Benaroya Hall, 7 pm

July Things to Do: Visual Art [The Stranger]

The best visual art events happening in July. by Audrey Vann

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

Humaira Abid

July 3–Aug 23

Each time I walk into the Greg Kucera Gallery, I stumble upon a crowd around Humaira Abid’s wood-carved blouses, oohing and aahing at their delicacy and realism. Through her sculptures and paintings, the Lahore-born, Pakistani American artist depicts ordinary objects like clothing, shoes, purses, and letters in an extraordinary way—by meticulously carving them out of pinewood and often adorning them with exquisite miniature paintings. The pieces don’t just display jaw-dropping craftsmanship, but also share powerful stories related to violence against women, refugees, and displacement. (Greg Kucera Gallery) AUDREY VANN

The Firestone: An Artist Takeover Along Market Street in Ballard

Through July 12

It feels like every week, an old Seattle building is torn down and replaced by a hideous apartment complex with a suspicious lack of windows. This is what is slated to happen to Ballard’s old Firestone building, which has stood on Market Street for over 50 years. Before the building gets demolished, public art specialist Aaron Asis and muralist Brady Black have partnered with the City of Seattle to cover the interior and exterior of the building with art. Through July 12, the public is invited to walk through the space to “contemplate buildings, public spaces, and the impact of art in our city,” and admire work from over 20 local creators. (Firestone, free) AUDREY VANN

Jamie Wyeth: ‘Unsettled’

July 12–Oct 6

Following in the footsteps of his father, Andrew, and grandfather, N.C., Jamie Wyeth is known for his realistic seascapes and famous portraits (I bet you’ve seen his paintings of JFK and Andy Warhol). On the only West Coast stop of this touring exhibit, you can expect to see the darkest corners of Wyeth’s life’s work—from the mid ’60s to today—with his most anxious, unnerving paintings that depict haunted houses, eerie landscapes, and dead creatures. Perhaps the most unsettling in this collection is a deeply cursed portrait of Michael Jackson—you’ll just have to see it to know what I mean. (Frye Art Museum, free) AUDREY VANN

Seattle Art Fair

July 17–20

The Seattle Art Fair—founded by noted art collector Paul Allen—is returning to Lumen Field for its ninth year, filling the football stadium with weird, avant-garde contemporary art from all over the globe (take that, jocks!). In the same vein as the Met Gala, the contributing artists are asked to display work inspired by a specific theme. This year’s theme is “Art Beyond Boundaries,” which invites artists to broaden their horizons by exploring technology, community, and other boundary-pushing themes. This year’s list of contributors includes galleries from South Africa, Ukraine, China, France, Greece, Italy, South Korea, Argentina, India, Iran, and Japan, as well as plenty from Seattle, Portland, and other nearby cities. (Lumen Field) AUDREY VANN

‘Spirit House’

July 26–Jan 11

Taking its name from the small devotional structures that shelter the supernatural around Thailand, this group exhibition asks 33 contemporary Asian American artists to explore how art can bridge the gap between life and death. Through paintings, photography, and sculpture, these works invite you to “commune with your ancestors, reflect on significant memories, and journey through time and space.” I am most excited to see work from California-based artist Kelly Akashi, who creates tender sculptures of hands from resin and stone. (Henry Art Museum) AUDREY VANN

More

WoP: Hibiki Miyazaki, Vander McClain, Stas Orlovski, Julie Liger Belair Through July 6, AMcE Creative Arts, free

Ash-Glazed Ceramics from Korea and Japan July 9–12, Seattle Art Museum

Ezra Dickinson: Who’s Offended July 11–Aug 22, Base Camp Studios 2, free

Suchitra Mattai: she walked in reverse and found their songs Through July 20, Seattle Asian Art Museum, sliding scale

The Abstract Now Through July 26, Studio E Gallery, free

Cable Griffith: Return to Sender Through July 26, J. Rinehart Gallery, free

Hi-Fructose 2025 Invitational Through Aug 2, Roq La Rue, free

Josh Faught: Sanctuary Through Aug 3, Henry Art Gallery

Ai, Rebel: The Art and Activism of Ai Weiwei Through Sept 7, Seattle Art Museum

Hugh Hayden: American Vernacular Through Sept 28, Frye Art Museum, free

Carmen Winant: Passing On Through Sept 25, Henry Art Gallery, suggested donation

Boren Banner Series: Tarrah Krajnak Through Oct 5, Frye Art Museum

Asian Comics: Evolution of an Art Form Through Jan 4, 2026, MoPOP 

Tariqa Waters: Venus Is Missing Through Jan 4, 2026, Seattle Art Museum

Ten Thousand Things Through spring 2027, Wing Luke Museum

Ai Weiwei: Circle of Animals/Zodiac Heads (Bronze) Nov 1, 2025–May 17, 2027, Olympic
Sculpture Park, free

Early Warnings

Kameelah Janan Rasheed Aug 23, 2025–April 26, 2026, Henry Art Gallery, free

Anila Quayyum Agha: Geometry of Light Aug 27, 2025–April 19, 2026, Seattle Asian Art Museum

Woven in Wool: Resilience in Coast Salish Weaving Sept 13, 2025–Aug 30, 2026, Burke Museum

Boren Banner Series: Camille Trautman Oct 15, 2025–April 12, 2026, Frye Art Museum, free

Farm to Table: Art, Food, and Identity in the Age of Impressionism Oct 23, 2025–Jan 18, 2026, Seattle Art Museum

July Things to Do: Music [The Stranger]

July concerts you shouldn't miss. by Julianne Bell

Want more? Here's everything we recommend this month: Music, Visual Art, Literature, Performance, Film, Food, This & That.

Ok Bucko, Wanda What

July 13

Referred to by musician and writer Eliza McLamb as “a real band’s band,” the Seattle four-piece Ok Bucko cite influences like the Cars and the Breeders and possess an irrepressible DIY punk-rock spirit. Their recent debut EP, A New Way, sizes up the current-day *gestures broadly at everything* and looks it straight in the eye. The opener, “Debt,” tackles the depressingly Sisyphean nature of finances with equal parts cynicism and self-compassion: “Who gets me better than my credit card statement / Who fucks me better than a new pair of shoes / If getting older is just writing checks / Growing up is getting over your debt.” “Window” takes aim at Seattle’s wealth disparity and affordable housing crisis, while “Strangers with Candy” explores the ups and downs of uppers and downers. They’ll headline this show at the Cha Cha Lounge with an opening set by the Los Angeles–based “dyke pop star” and former local Wanda What. (Cha Cha Lounge, 8 pm, 21+, free) JULIANNE BELL

Gyedu-Blay Ambolley

July 15

Ghanaian highlife luminary Gyedu-Blay Ambolley is known for Afrobeat tunes that blend soul, folk, and jazz with traditional African rhythms. He will bring his eight-piece band out to the Tractor to play his seminal 1975 debut album, Simigwa, in its entirety. The album was heavily influenced by the horn-heavy funk of James Brown, complete with references to being a “sex machine” and plenty of screams, shouts, and lively ad-libs. This show is a must for fans of Fela Kuti, Cymande, or Studio One compilations. (Tractor Tavern, 8 pm, 21+) AUDREY VANN

TEKE::TEKE

July 16

If you render your nom de musique in all caps and with two colons, you’d better sound pretty distinctive. Thankfully, Montreal septet TEKE::TEKE carve out a unique niche in today’s scene. Their foundation is a style of surf rock known as Eleki that uses traditional Japanese instruments; they then add trombone, flute, electric guitars, and drums to bring in elements of extravagant psychedelia and Nipponese film music of the ’60s and ’70s. The result is a swashbuckling, high-voltage sound that gives your ears vertigo, in the most exciting way imaginable. Respect to Kill Rock Stars for getting out of its comfort zone and championing this band. (Madame Lou’s, 8:30 pm, 21+) DAVE SEGAL

Matmos

July 20

America’s foremost experimental music group who also happen to be a gay married couple, Matmos have been bringing Dadaistic playfulness and conceptual rigor to their albums and mind-boggling live shows for 30 years. Every record by Drew Daniel and M.C. Schmidt (literature professor and music instructor, respectively) is created under clever, self-imposed limitations, to keep things fresh and surprising. For example, they generated the tracks on new album Metallic Life Review strictly from, you guessed it, metal objects, both mundane and arcane. With help from members of Horse Lords, Water Damage, Half Japanese, and the late pedal steel guitarist Susan Alcorn, Matmos have created a weird species of ritualistic music, often with eccentric grooves to which you can dance—if your limbs have ESP. Some may think of it as novelty music for intellectuals, but it’s still a rarefied treat. (Here-After, 8 pm, 21+) DAVE SEGAL

Sister Nancy w/the Rootsonic Band, Zions Gate Sound 

July 20

If she’d only cut the 1982 classic “Bam Bam,” Jamaican reggae and dancehall DJ Sister Nancy would be a hall of famer. That track has been caned by DJs and copiously compiled for more than four decades (and streamed over 221 million times on a hated platform), thanks to Nancy’s bubbly cadence and silken timbre... and Robbie Shakespeare’s unstoppable bassline. Over her decades-long career, the woman born Ophlin Russell’s instantly identifiable voice has flitted gracefully from domineering to defiant to dulcet, garnering much justified praise. Following on from the 2025 Record Store Day reissue of Sister Nancy’s 100 percent fire debut LP, One, Two, this is a rare Seattle appearance by dancehall royalty. (Nectar Lounge, 8 pm, 21+) DAVE SEGAL

Sophie B. Hawkins

July 26

If you ask me, Sophie B. Hawkins’s “Damn I Wish I Was Your Lover” is one of the greatest songs of all time. The raw, unbridled emotion and fiercely vulnerable lyrics, delivered in Hawkins’s slightly raspy powerhouse voice, make the anthem one of the most indelible hits of the ’90s. It simply brims with queer yearning and topped the charts in 1992, a time when an explicitly sapphic love song had never before broken out into the mainstream. (Hawkins identifies as “omnisexual,” a term she coined to describe herself before sexual fluidity was commonly accepted, and the song’s narrator expresses the desire to rescue a woman from her abusive relationship with passion and tenderness.) I also love the similarly intense “Right Beside You” and the earnestly sweet “As I Lay Me Down.” Catch the iconic singer-songwriter’s acoustic tour, commemorating the 30th anniversary of her sophomore album, Whaler, which was released in 1994. (The Triple Door, 7:30 pm, all ages) JULIANNE BELL

Surprise Chef, Derya Yıldırım & Grup imek

July 29 

Odds are, you’ve probably found yourself Shazaming at the club and receiving results that prompt you to explore certain artists further. That’s me with Surprise Chef. Thanks to cell-phone-triggered algorithms, the Australian quintet’s been nice-ing up my head for the last two years. Currently recording for Brooklyn’s outstanding Big Crown label, Surprise Chef forgo vocals in their suavely cinematic funk and soul tracks while deploying the sort of versatility and virtuosity commonly heard in the dopest library musicians of the ’60s and ’70s. An instrumental like “Consulate Case” off this year’s Superb album exemplifies the group’s ability to keep things mysterious while grooving like mofos. A hunch: Surprise Chef’s sample-worthy music will sound even hotter live. (Tractor Tavern, 8 pm, 21+) DAVE SEGAL

Lifeguard

July 30

In an ever-changing world, at least one thing remains constant: Matador Records’ A&R department knows how to find very good rock bands, even when rock seems as if it’s ready to be shunted off to an assisted living facility. The latest example? Baby-faced Chicago trio Lifeguard. Their scathing and tuneful new album, Ripped and Torn, marauds with the kind of authority that make aging critics utter cringe proclamations like “the kids are all right.” But, Jah damn it, Lifeguard have that innate sonic charisma that suggests they spent their youths intently studying history’s most righteous post-punk groups, and then putting their own distinctive stamp on that style. Having played together since they were in high school, Asher Case, Isaac Lowenstein, and Kai Slater exude a natural chemistry that bands such as Wire, Mission of Burma, and Gang of Four presented way before these dudes were born. That Lifeguard’s guitar/bass/synth/drums hit with an angular force while retaining a nagging melodiousness can make even the most jaded listeners doubt their “rock is dead” dogma. (Baba Yaga, 7 pm, all ages) DAVE SEGAL

More

TARBOO 2025 July 3–5, Quilcene Lantern

Pass the Aux: Parisalexa, Josiah Mekhi, Arze, Asawni July 5, Hidden Hall 8 pm, 21+

Ha Vay: Spellbound Tour July 10, Madame Lou’s, 7:30 pm

Jena Von Jupiter with Claire Morales, Calm Down Party, and Patrick Toney July 10, Baba Yaga, 7 pm, 21+

Washed Out (DJ Set) July 11, Nectar Lounge, 8 pm, 21+

Downtown Summer Sounds July 11–Aug 28, various locations

Silversun Pickups July 13, Pier 62, 5 pm, all ages

Macy Gray: On How Life Is 25th Anniversary Tour July 15, The Crocodile, 8 pm, 21+

Carson Daniel July 18, Darrell’s Tavern, 8 pm, 21+

Caroline Rose July 18–19, Sunset Tavern, 8 pm, 21+

Capitol Hill Block Party July 18–20, Capitol Hill, 21+

Masego July 19, Remlinger Farms, 6 pm, all ages, 7 pm

Katy Perry: The Lifetimes Tour July 21, Climate Pledge Arena, all ages, 7 pm

Of Montreal: The Sunlandic Twins 20th Anniversary Tour, Bijoux Cone July 22, Neumos, 7 pm, 21+

Ruthie Foster July 22–23, Jazz Alley, 7:30 pm

Mei Semones with Lionmilk July 23, Barboza, 7 pm

Devo July 23–24, Woodland Park Zoo, 6 pm, all ages

Cap’n Jazz July 25, Neumos, 8 pm, 21+

The Damned July 25, Showbox, 7:30 pm, 21+

Mannequin Pussy July 25, Spanish Ballroom, 7 pm

Timber! Outdoor Music Festival July 24–26, Tolt-Macdonald Park

Monster Planet with Young Scientist July 26, Chapel Performance Space, 8 pm

The Marías: Submarine Tour July 27, WAMU Theater, 8 pm

Iggy Pop July 28, Marymoor Park, all ages, 7 pm

Some Velvet Sidewalk July 31, Clock-Out Lounge, 8:30 pm, 21+

Death Cab for Cutie: Plans 20th Anniversary June 31 and Aug 2, Climate Pledge Arena, 8 pm, all ages

Paul Simon July 31 & Aug 2–3, Benaroya Hall, 8 pm

Pickathon July 31–Aug 3, Happy Valley, OR

Mekons Aug 2, Tractor Tavern, 8:30 pm, 21+

Novos Baianos Aug 3, Neptune Theatre, 8 pm, all ages

THING Fest Aug 2, Aug 9, Aug 16, Aug 23, Remlinger Farms

Less Than Jake, Fishbone, the Suicide Machines, Catbite Aug 5, Showbox Sodo, 7 pm, all ages

Early Warnings

Colleen Green, Rozwell Kid Aug 6, Vera Project, 7 pm, all ages

Lady Gaga Aug 6–7, Climate Pledge Arena, 8 pm, all ages

LCD Soundsystem, TV on the Radio Aug 7–8, Remlinger Farms, 6 pm, all ages

Dinosaur Jr., Snail Mail, Easy Action Aug 8, Chateau Ste. Michelle, 6:30 pm, all ages

Lucy Dacus, Julia Jacklin Aug 10, Remlinger Farms, 6:30 pm, all ages

Alabama Shakes Aug 16, Climate Pledge Arena, 7 pm, all ages

The Lumineers Aug 16, T-Mobile Park, 8 pm, all ages

Femi Kuti & the Positive Force Aug 16, Neptune Theatre, 8 pm, all ages

L7 and Bratmobile at South Sound Block Party Aug 22–23, Port of Olympia, all ages

Hunx and His Punx Aug 26, Clock-Out Lounge, 8 pm, 21+

Stardew Valley: Symphony of Seasons Aug 29–31, Benaroya Hall, various times, all ages

Bumbershoot 2025: Arts and Music Festival Aug 30–31, Seattle Center, all ages

Wet Leg, Mary in the Junkyard Sept 1–2, Paramount Theatre, 6:30 pm, all ages

Japanese Breakfast, Ginger Root Sept 2–3, Woodland Park Zoo

Neil Young and the Chrome Hearts Sep 5, Gorge Amphitheatre, 7:30 pm, all ages

Osees Sept 5–6, Neumos, times and age-ranges vary

W.I.T.C.H. Sept 8, Tractor Tavern, 7 pm, 21+

Viagra Boys Sept 12–13, Showbox SoDo, all ages

The Psychedelic Furs, Gary Numan Sept 13, Showbox, 8 pm, 21+

HAIM, Dora Jar Sept 18, WAMU Theater, 7:30 pm, all ages

Grandaddy Sept 18, Neptune Theatre, 7 pm, all ages

Princess Nokia & Big Freedia Sept 27, Pier 62, 6:30 pm, all ages

Pup, Jeff Rosenstock, Akko Astral Oct 7, Showbox Sodo, 7:30 pm, all ages

Garbage, Starcrawler Oct 15, Paramount Theatre, 8 pm, all ages

Destroyer: Dan’s Boogie Tour Oct 25, The Crocodile, 5 pm, 21+

Shonen Knife, the Pack A.D. Oct 25, Tractor Tavern, 8:30 pm, 21+

Freakout Festival: Melt-Banana, Liz Cooper, Wine Lips, and more Nov 6–9, various locations, 21+

Belly: 30th Anniversary of King Nov 9, The Crocodile, 6 pm, 21+

The Mountain Goats Dec 3–4, Neptune Theatre, all ages

00:21

Fruit Fight [The Stranger]

Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! by Anonymous

I want your cherries. I want your figs. I want your blueberries and raspberries, too. Every summer I watch them grow, ripen, and rot in front of your house. They’re growing over the public sidewalk and, in some cases, in that little patch of garden between the sidewalk and the road. You aren’t harvesting them. I never see you out there picking them, enjoying them, sharing them. In so many cases, ignored, unless some lucky birds or critters get them. You planted the tree or bush or aesthetic purposes, so you can have a lush, bountiful garden. And for what? Those blueberries are plump as fuck!

So… can I have them? Are they free for the taking? Would it be so hard to put a little sign out front that says, “Help yourself!” so they don’t go to waste? I want to be a good neighbor and respect your property and your space, but I also want those figs. There are literally hundreds. Help a neighbor out. Let the people pick ‘em if you’re just going to let them go to waste.

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.

Wednesday, 02 July

23:42

Tick-bite that can cause meat allergy [Richard Stallman's Political Notes]

Ticks of a certain species, from the southeast US, cause a painful and lasting allergy to mammal meat and dairy, in humans they bite. Due to global heating, the ticks are spreading north and have been seen in New York and Maine, close to the northern border of the US.

One could imagine that the spread of this allergy could reduce consumption of red meat and dairy thus curb global heating, but I don't think it would be enough to save civilization.

Federal judiciary as meddlers [Richard Stallman's Political Notes]

Robert Reich: *Last night I couldn’t get out of my head that [the would-be emperor] is intent on abolishing the two branches of the government with the constitutional duty to constrain him.*

Federal court injunctions as overreach [Richard Stallman's Political Notes]

The Big Brutal Bill was going to strip federal courts of the power to issue injunctions to block specific unconstitutional or illegal practices no matter who the victim was. The decision on that bill has not yet been made, as far as I know. But the Supreme Court just did the deed.

The Supreme Court's devastating decision effectively allows the bully to disregard the constitution, except against the specific plaintiffs that have sued about it.

The same 9 justices upheld that power as legitimate when it was used against Biden's policies, and for a long time before that under other presidents.

More about this.

I've read that some lawyers are using a class-action suit to try to get around this change.

23:35

Page 41 [Flipside]

Page 41 is done.

22:56

Link [Scripting News]

WordLand 0.5.16 -- Rounding out the linkblogging features.

22:49

Dirk Eddelbuettel: RcppArmadillo 14.6.0-1 on CRAN: New Upstream Minor Release [Planet Debian]

armadillo image

Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1241 other packages on CRAN, downloaded 40.4 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 634 times according to Google Scholar.

Conrad released a minor version 4.6.0 yesterday which offers new accessors for non-finite values. And despite being in Beautiful British Columbia on vacation, I had wrapped up two rounds of reverse dependency checks preparing his 4.6.0 release, and shipped this to CRAN this morning where it passed with flying colours and no human intervention—even with over 1200 reverse dependencies. The changes since the last CRAN release are summarised below.

Changes in RcppArmadillo version 14.6.0-1 (2025-07-02)

  • Upgraded to Armadillo release 14.6.0 (Caffe Mocha)

    • Added balance() to transform matrices so that column and row norms are roughly the same

    • Added omit_nan() and omit_nonfinite() to extract elements while omitting NaN and non-finite values

    • Added find_nonnan() for finding indices of non-NaN elements

    • Added standalone replace() function

  • The fastLm() help page now mentions that options to solve() can control its behavior.

Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forge page.

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 sponsor me at GitHub.

Servers and thin clients in every home is the future they stole from us [OSnews]

I’ve used thin clients at home for quite a while – both for their intended use (remotely accessing a desktop of another system); and in the sense of “modern thin clients are x86 boxes that are wildly overpowered for what they run, so they make good mini servers.”

Recently, I saw a bulk lot of Sun Ray thin clients pop up on Trade Me (NZ’s eBay-like auction site) – and with very little idea of how many clients were actually included in this lot, I jumped on it. After a 9 hour round-trip drive (on some of the worst roads I’ve seen!), I returned home with the back of my car completely packed with Sun Rays. Time for some interesting shenanigans!

↫ catstret.ch

I was unaware you could still set up a Sun Ray environment with latest versions of OpenIndiana, and that has me quite interested in buying a few Sun Rays off eBay and follow in the author’s footsteps. It seems like it’s not too difficult, and while there’s some manual nonsense you have to do to get everything to install correctly, it’s nothing crazy.

To this day, I firmly believe that the concept of dumb thin clients connected to powerful servers is an alluring and interesting way of computing. I’m not talking about connecting up to servers owned by massive technology corporations – I’m talking about a few powerful servers down in your own basement or attic or whatever, serving applications and desktops straight to basic thin clients all around your house. These thin clients can take the shape of anything, from something like a desktop setup in your office, down to a basic display in your kitchen for showing recipes, setting timers, and other basic stuff – and everything in between.

Sun Rays could ‘hot desk’ using personal smart cards, but of course, in this day and age you’d have your smartphone. The thin clients around your house would know it was you through your smartphone, and serve up the applications, desktop, tools, and so on that you use, but everything would be running on the servers in your house. Of course, my wife would have her own account on the server, as would our children, when they are old enough.

None of this is impossible with today’s tools and computing power, but it wouldn’t be easy to set up. There are no integrated solutions out there to make this happen; you’d have to scrap it together from disparate parts and tools, and I doubt such a house of cards would end up being reliable enough not to quickly become a massive annoyance and time sink. On top of that, we live in a rental apartment, so we don’t even have a basement or attic to store loud servers in, nor are we allowed to drill holes and route Ethernet cabling for optimal performance.

Anyway, there’s no chance in hell any of the major technology companies would build such a complex ecosystem in a world where it’s much easier and more profitable to force people to subscribe to shitty services. In my ideal computing world, though – a server in every home, with cheap thin clients in every room.

21:14

Page 40 [Flipside]

Page 40 is done.

Dirk Eddelbuettel: Rcpp 1.1.0 on CRAN: C++11 now Minimum, Regular Semi-Annual Update [Planet Debian]

rcpp logo

With a friendly Canadian hand wave from vacation in Beautiful British Columbia, and speaking on behalf of the Rcpp Core Team, I am excited to shared that the (regularly scheduled bi-annual) update to Rcpp just brought version 1.1.0 to CRAN. Debian builds haven been prepared and uploaded, Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution–and of course r2u should catch up tomorrow as well.

The key highlight of this release is the switch to C++11 as minimum standard. R itself did so in release 4.0.0 more than half a decade ago; if someone is really tied to an older version of R and an equally old compiler then using an older Rcpp with it has to be acceptable. Our own tests (using continuous integration at GitHub) still go back all the way to R 3.5.* and work fine (with a new-enough compiler). In the previous release post, we commented that we had only reverse dependency (falsely) come up in the tests by CRAN, this time there was none among the well over 3000 packages using Rcpp at CRAN. Which really is quite amazing, and possibly also a testament to our rigorous continued testing of our development and snapshot releases on the key branch.

This release continues with the six-months January-July cycle started with release 1.0.5 in July 2020. As just mentioned, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available. While we not longer regularly update the Rcpp drat repo, the r-universe page and repo now really fill this role admirably (and with many more builds besides just source). We continue to strongly encourage their use and testing—I run my systems with these versions which tend to work just as well, and are of course also fully tested against all reverse-dependencies.

Rcpp has long established itself as the most popular way of enhancing R with C or C++ code. Right now, 3038 packages on CRAN depend on Rcpp for making analytical code go faster and further. On CRAN, 13.6% of all packages depend (directly) on Rcpp, and 61.3% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 100.8 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 2023 (JSS, 2011) and 380 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 695.

As mentioned, this release switches to C++11 as the minimum standard. The diffstat display in the CRANberries comparison to the previous release shows how several (generated) sources files with C++98 boilerplate have now been removed; we also flattened a number of if/else sections we no longer need to cater to older compilers (see below for details). We also managed more accommodation for the demands of tighter use of the C API of R by removing DATAPTR and CLOENV use. A number of other changes are detailed below.

The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!

Changes in Rcpp release version 1.1.0 (2025-07-01)

  • Changes in Rcpp API:

    • C++11 is now the required minimal C++ standard

    • The std::string_view type is now covered by wrap() (Lev Kandel in #1356 as discussed in #1357)

    • A last remaining DATAPTR use has been converted to DATAPTR_RO (Dirk in #1359)

    • Under R 4.5.0 or later, R_ClosureEnv is used instead of CLOENV (Dirk in #1361 fixing #1360)

    • Use of lsInternal switched to lsInternal3 (Dirk in #1362)

    • Removed compiler detection macro in a header cleanup setting C++11 as the minunum (Dirk in #1364 closing #1363)

    • Variadic templates are now used onconditionally given C++11 (Dirk in #1367 closing #1366)

    • Remove RCPP_USING_CXX11 as a #define as C++11 is now a given (Dirk in #1369)

    • Additional cleanup for __cplusplus checks (Iñaki in #1371 fixing #1370)

    • Unordered set construction no longer needs a macro for the pre-C++11 case (Iñaki in #1372)

    • Lambdas are supported in a Rcpp Sugar functions (Iñaki in #1373)

    • The Date(time)Vector classes now have default ctor (Dirk in #1385 closing #1384)

    • Fixed an issue where Rcpp::Language would duplicate its arguments (Kevin in #1388, fixing #1386)

  • Changes in Rcpp Attributes:

    • The C++26 standard now has plugin support (Dirk in #1381 closing #1380)
  • Changes in Rcpp Documentation:

    • Several typos were correct in the NEWS file (Ben Bolker in #1354)

    • The Rcpp Libraries vignette mentions PACKAGE_types.h to declare types used in RcppExports.cpp (Dirk in #1355)

    • The vignettes bibliography file was updated to current package versions, and now uses doi references (Dirk in #1389)

  • Changes in Rcpp Deployment:

    • Rcpp.package.skeleton() creates ‘URL’ and ‘BugReports’ if given a GitHub username (Dirk in #1358)

    • R 4.4.* has been added to the CI matrix (Dirk in #1376)

    • Tests involving NA propagation are skipped under linux-arm64 as they are under macos-arm (Dirk in #1379 closing #1378)

Thanks to my CRANberries, you can also look at a diff to the previous release Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues).

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 sponsor me at GitHub.

The new troll diet [OSnews]

We need a new framework for how to defend against “trolls”. The feeding metaphor ran its course many years ago. It is done and will not be coming back.

New online risks demand that we adapt and become proactive in protecting our spaces. We have to loudly and proudly set the terms of what is permissible. Those holding social or institutional power in communities should be willing to drop a few loud fuck offs to anyone trying to work their way in by weaponizing optics, concern trolling, or the well known “tolerance paradox”. Conceding through silence, or self-censorship, only emboldens those who benefit from attacking a community.

↫ diegoebe

Een volk dat voor tirannen zwicht, zal meer dan lijf en goed verliezen, dan dooft het licht.

The Stranger Endorses Katie Wilson for Mayor [The Stranger]

Bruce Harrell had his chance. by Stranger Election Control Board

Bruce Harrell had his chance.

A lifetime ago (in 2021), when Harrell first ran for mayor, he made a lot of big, substantive promises that voters seemed to believe: He pledged to build 1,000 new housing units in his first six months in office; he committed to changing the biased policing culture in SPD after the George Floyd protests; he said he didn’t believe “dispersal,” or sweeps, worked, and promised to take a “Housing First” approach to encampments around the city. Are we living in a utopia yet?

In our endorsement meeting, we asked about his broken promises. We pointed out that he conducted more sweeps than his five predecessors combined. That he sunk years of municipal effort and energy into a Comprehensive Plan that won’t meet our housing needs. That he pandered to police with bruised egos, letting them become the militant thugs that we saw in Cal Anderson on Memorial Day weekend, but with higher salaries. And in an hour-long endorsement meeting, he didn’t answer for a single thing. In every case, the conditions in his city were someone else’s fault. Homelessness? The other cities in King County aren’t doing their part. The police that he says can take a hike if they don’t agree with his idea of good policing? Well, he told us, he doesn’t actually know what good policing is. They’re the experts, not him. Nothing was his responsibility. 

We understand why he would feel that way. Because the greatest sin of the Harrell Administration is what it hasn’t done. He’s a mayor without imagination, and with him at the helm, Seattle is a rudderless ship on a windless ocean. While tens of thousands of Seattleites are struggling to keep their head above water, he’s obsessing over penises spray painted on the overpasses, AI incubators, and digital advertising kiosks that profit private companies. 

There’s a perception that this race was Harrell’s from the start, so there was no use doing anything to stop him. But that’s not the case. In polling this spring, only 37 percent of Seattleites were happy with Harrell’s work in City Hall. Enough of Seattle is sick of the Harrell Show.

Katie Wilson is Harrell’s opposite. If Harrell is all politics and no substance, Wilson is substance embodied. She’s been an organizer in Seattle for 15 years, and she’s built a career fighting for—and winning—campaigns like raising the minimum wage, protecting affordable transit, and building progressive revenue. 

Wilson’s campaign platform is clearly made by someone who’s used to making change in a system that’s built to fight against it. She has clear, step-by-step plans to build 4,000 units of shelter in four years, to streamline access to addiction and mental health treatment, and to build $1 billion worth of union-built affordable housing. Harrell made promises. Wilson actually intends to keep hers. And she knows how to do it.

In our meeting, one question best captured the difference between Wilson and Harrell. We asked about the FIFA World Cup coming to Seattle in 2026. When Seattle hosted the MLB All-Star game in 2023, the city swept any encampments in the area out of sight. Surely, next year, Seattle’s mayor would have to field a fair amount of outside pressure to make visible homelessness invisible while the world’s eyes are on us. How would they respond?

We gave Harrell two chances to answer the question, and he never did. Instead, he ranted about how our surrounding cities aren’t building as much shelter as we are, how he has to prioritize small businesses, said it was his responsibility to revitalize downtown, and reminded us that he signed an ordinance to make Seattle a Human Rights City. Then he turned to the other candidates, and said: “How dare you talk about the values I’ve been a part of for the last 16 years.” 

Wilson, meanwhile, rejected the premise of the question entirely. Not because she didn’t want to answer it, but because she had a plan to stand up enough shelter in the first six months of her term—between tiny home villages, faith communities, and vacancies throughout the city—to make the question irrelevant. “Let’s get people inside in time for the World Cup,” she said.

See that, Harrell? No excuses, just a goal, a plan, and a timeline. This is why Wilson has our vote. She sees people that are struggling and thinks about solutions, not optics. She obviously, palpably gives a damn about people, and that drives her to act, not just talk.

While we were writing this endorsement, Zohran Mamdani, a Democratic Socialist with a people-first platform, wiped the floor with an establishment Democrat in New York City’s primary. Mamdani’s win is proof that people can show up in droves and throw decades of political tradition in the trash and choose something better. And that to accomplish such a feat, being a hell of a politician with a great personality helps a fuckton.

Wilson has the platform. What she doesn’t have is the energy. She’s quiet. She’s policy minded. She makes deeply awkward TikToks. But she knows her shit and she cares. Wilson doesn’t pull out the tear-jerking stump speech or throw down with her opposition. And while we trust that your vote will get her through the primary, we need her to throw down. Show everyone that Harrell’s empty, that he’s unelectable this time. This city wants to see that. And it wants change. Do what you need to do to give the people what they want. Show us your spine is as sturdy as that platform. We know it’s in you.

Now reader, we know that Wilson isn’t the only one making a run for Harrell’s graffiti-less office (and Joe Molloy, we hope to see you run for City Council, where your good heart, and brains, would be appreciated), but she’s the only one who has the secret sauce we need to see: one-part great ideas, one-part the knowledge and experience to pull them off, two-parts the willingness to leave an easier life as an organizer to serve the city when she thinks she’s needed. We just need her to add a little heat to that sauce.

If you’re still wondering if dethroning Harrell is the right decision, we’ll leave you with one more detail. For the last year, members of his administration have talked about the misogyny, bullying, and literal chest beating in City Hall since he’s been in office. We had Mayor Harrell in our conference room for just under an hour, and in that time, he did nothing to convince us that his reputation was not a completely accurate characterization. We lost count of how many times he pounded his fist onto the table and stomped his feet, and we had to shout over him more than once to stop him from yelling at other candidates. Harrell somehow made Joe Mallahan look good (well, not that good). He took control of the room—not the way a charismatic speaker captures an audience, but the way your angry uncle sucks the air out of the room on Thanksgiving. Our civic self-esteem cannot be so low.

Don’t make the mistake of thinking that we need a strong, bullish personality at the helm of our city to combat everything that Trump promises to rain on us in the next three and a half years. Mayor Harrell has shown us, time and time again, that all he’s going to do is bully Seattle, not Trump. And we can’t afford that. Wilson may be quiet. But she has values. 

Seattle has a time-honored tradition of producing one-term mayors. Let’s make Harrell one of them. Vote Wilson.

21:07

Your Wednesday Watermelon Report [Whatever]

Whilst I was perusing the produce section at Kroger last week, I came across a watermelon. Not just any watermelon, though. Private Selection’s “Black Diamond” watermelons. I figured since y’all seemed to enjoy my orange review, you might want the skinny on this here watermelon, as well:

A watermelon with a big label sticker on it that reads

Unlike the Sugar Gem oranges, this watermelon was sweeter than a regular ol’ watermelon. Not only that, but the label boasts a rich, red flesh. I thought it may have been all talk, but lo and behold it was indeed very red! I bought this one for six dollars, which is pretty much the exact same cost as a regular watermelon, and it’s roughly the same size, so I’d say you should go ahead and buy this one over the regular ones if you are someone who prefers a juicier, sweeter watermelon.

I served this watermelon to my parents, both of whom do not particularly care for watermelon, and they made a point of telling me how good this particular watermelon was and ended up eating a good bit of it when normally they probably wouldn’t have opted for any watermelon at all.

With the 4th approaching this weekend, I assume many of y’all will want to pick up a watermelon, and I think if your Kroger has these ones lying around you should give it a try! I’ve been meaning to buy another one because it’s the perfect refreshing snack during this recent heat wave.

It’s nice to try something new and actually have a good experience with it. Those Sugar Gem oranges may have been a bust, but this Black Diamond Watermelon is definitely a winner in my book.

Do you like watermelon? If you don’t, would you be willing to give this one a try based on my parents’ reaction to it? Do you have fun plans for the 4th? Let me know in the comments, and have a great day!

-AMS

19:14

Leveling Up Futures: Championing Covenant House’s Youth Development Programs [Humble Bundle Blog]

At Humble, we believe in the power of community to create meaningful change, and this July, we’re honored to partner with Covenant House to help young people build brighter futures. Why Covenant House? Covenant House is more than a shelter—it’s a place of transformation. Each year, their workforce development programs empower thousands of young people facing homelessness to gain the skills, confidence, and experience they …

The post Leveling Up Futures: Championing Covenant House’s Youth Development Programs appeared first on Humble Bundle Blog.

Ursign [Penny Arcade]

I was talking to Kiko, whose entire social media diet is checking BlueSky once a week, and it was clear to me how hale and vigorous he was as a result. My own nutrition, pilfered by these deleterious forces, is patchy at best. Necessary compounds are scarce; youthful skin is a memory. I just saw myself in a mirror - for a few moments, I thought I was looking at bowling ball with a greasy napkin draped over it.

18:56

Gunnar Wolf: Get your personalized map of DebConf25 in Brest [Planet Debian]

As I often do, this year I have also prepared a set of personalized maps for your OpenPGP keysigning in DebConf25, in Brest!

What is that, dare you ask?

Partial view of my OpenPGP map

One of the not-to-be-missed traditions of DebConf is a Key-Signing Party (KSP) that spans the whole conference! Travelling from all the corners of the world to a single, large group gathering, we have the ideal opportunity to spread some communicable diseases trust on your peers’ identities and strengthen Debian’s OpenPGP keyring.

But whom should you approach for keysigning?

Go find yourself in the nice listing I have prepared. By clicking on your long keyid (in my case, the link labeled 0x2404C9546E145360), anybody can download your certificate (public key + signatures). The SVG and PNG links will yield a graphic version of your position within the DC25 keyring, and the TXT link will give you a textual explanation of it. (of course, your links will differ, yada yada…)

Please note this is still a preview of our KSP information: You will notice there are outstanding several things for me to fix before marking the file as final. First, some names have encoding issues I will fix. Second, some keys might be missing — if you submitted your key as part of the conference registration form but it is not showing, it must be because my scripts didn’t find it in any of the queried keyservers. My scripts are querying the following servers:

hkps://keyring.debian.org/
hkps://keys.openpgp.org/
hkps://keyserver.computer42.org/
hkps://keyserver.ubuntu.com/
hkps://pgp.mit.edu/
hkps://pgp.pm/
hkps://pgp.surf.nl/
hkps://pgpkeys.eu/
hkps://the.earth.li/

Make sure your key is available in at least some of them; I will try to do a further run on Friday, before travelling, or shortly after arriving to France.

If you didn’t submit your key in time, but you will be at DC25, please mail me stating [DC25 KSP] in your mail title, and I will manually add it to the list.

On (hopefully!) Friday, I’ll post the final, canonical KSP coordination page which you should download and calculate its SHA256-sum. We will have printed out convenience sheets to help you do your keysigning at the front desk.

18:07

Slog AM: Trump Visits “Alligator Alcatraz,” Microsoft Is Still Laying People Off, We (Officially) Have a New Police Chief [The Stranger]

The Stranger's morning news roundup. by Megan Seling

The Star-Crossed Bummers Are Still Feuding: On Monday, Elon said he would fund the future political campaigns of anyone running against any Republican who votes for Trump’s shitty bill. “They will lose their primary next year if it is the last thing I do on this Earth,” he said. Trump fired back, threatening on Truth Social to cut Elon’s government subsidies, adding, “Elon would probably have to close up shop and head back home to South Africa.” Then Elon said that was, “so wrong” and “disappointing,” which are kind of weak sauce retorts, tbh, and then the bell rang and they all had to run back to class because Mr. McConnell said if either of them are tardy one more time, they can’t buy a ticket to prom.

Speaking of the Bill I Refuse to Call Big and/or Beautiful: CNN has a pretty good breakdown of the Senate’s version. Some “highlights”: Millions will lose Medicaid coverage due to a new work requirement and less federal funding; millions will find it harder to get food stamps and SNAP benefits, including parents and veterans; immigrants will no longer qualify for benefits; hospitals will probably have to close due to lack of funding, but Trump’s wall will get a $45 BILLION WITH A B budget; and new babies get $1,000 because sure, why not, babies are famously good with money. According to the Seattle Times, Washington is likely to take the biggest hit of any state from the Medicaid cuts, because we did the right thing and leaned into Obamacare a decade ago. The House is currently debating the bill, and C-SPAN is streaming live if rage is your kink. 

Now Tesla’s Stock Is Sinking: Tesla’s stock took tumble Tuesday after the Senate passed Trump’s bill. Why? Because one of the changes the Senate made includes eliminating electric vehicle tax credits sooner, cutting somewhere around $1.2 billion from Tesla’s annual profit. It recovered this morning, though, after delivering more electric vehicles than expected in the second quarter. Trump’s gonna be so mad. 

Trump Visited Florida’s “Alligator Alcatraz”: It wasn’t a fever dream. Florida officials really did build a deportation holding facility in the fucking Everglades. According to Al Jazeera, when Trump arrived at the site, he said, “This is what you need. A lot of bodyguards and a lot of cops in the form of alligators.” Twenty bucks says that big dummy digs a moat around the White House and fills it with alligators by the end of the year.

Fourth of July Fun: All this bullshit got you feeling less than patriotic? Sure, you could grill hot dogs and blow shit up to mark America’s 249th birthday this Friday, or you could gather with your fellow disenfranchised Seattleites at Push/Pull in Ballard for F#ck the Fourth, a “voter registration, postcard writing, and rage release.” They’ll have postcards and postage if you want to tell elected officials how you really feel, or you can create your own info-packed zine, and they’ll print and distribute it! 

Musicians Are Dumping Spotify (Again): Artists are pulling their music off Spotify after the company’s CEO Daniel Ek made a $700 million investment in “AI battle tech” company Prima Materia. Deerhoof started the new wave, announcing on Instagram, “We don’t want our music killing people.” Artists also left en masse in 2022 after Neil Young criticized the platform for hosting Joe Rogan’s podcast.

Former Stranger Genius Award Winner Erik Blood, Everybody

You won’t find my music on Spotify anymore and I couldn’t be happier about it

— Erik Blood (@erikblood.bsky.social) July 2, 2025 at 8:51 AM

More Microsoft Layoffs: The company confirmed this morning that they’re cutting 9,000 more jobs. DOES ANYONE EVEN WORK THERE ANYMORE? 

We Got a New Police Chief: Yesterday, the Seattle City Council unanimously confirmed Shon Barnes as Seattle’s new police chief. Barnes has been the interim police chief since January, after Adrian Diaz was fired. (Related: Diaz is suing the city for “unlawful termination.”)

The Diddy Verdicts Are In: He was found not guilty of sex trafficking and racketeering conspiracy, and convicted of transporting people for prostitution. He faces up to 20 years in prison. 

Is the Plural Winnies-the-Pooh or Winnie-the-Poohs? “2 bears escape wildlife park enclosure, devour a 7-day supply of honey, then fall asleep.” Delightful.

I Love This Goofy City: Next week, Metro lovers and haters are invited to Race Route 8. “It’s easy to outwalk the L8, but can we still beat it while doing the cha-cha slide, hopscotching, or in a conga line? Join one of our race activities or bring your own creative things you can do while still beating the bus!” Someone should see if they can read the July issue of The Stranger (out today!) in its entirety while racing the bus. 

Join us next Thursday, July 10th at 5 PM at Denny / Dexter to race Route 8! It’s easy to outwalk the L8, but can we still beat it while doing the cha-cha slide, hopscotching, or in a conga line? Join one of our race activities or bring your own creative things you can do while still beating the bus!

[image or embed]

— Fix the L8 (@fixthel8.bsky.social) June 30, 2025 at 4:53 PM

And With That: I leave you with the appropriate song, “F.U. #8,” by Seattle’s own Tacocat. (Featuring Stranger Arts Editor Emily Nokes!) 

17:21

Unintended yet somehow entirely expected consequences of marking a COM interface as local [The Old New Thing]

A customer was adding an interface to their out-of-process COM server. They added their interface to the project’s existing IDL file and recompiled the resulting proxy stub DLL. But when they tried to connect to the server, the connection failed with error 0x80040155, also known as REGDB_E_IID­NOT­REG: Interface not registered.

They realized that they forgot to register the interface’s proxy, so they added an entry to [HKCR\Interface\{iid}\ProxyStubClsid32] so that COM knew where to find the proxy stub. (They didn’t have to create a new CLSID entry for the proxy DLL because they were adding an interface to their existing IDL, so the proxy DLL was itself already registered by whoever set up that IDL file initially.)

Upon trying again, the connection still failed. This time with the error 0x80004002, the often-encountered E_NO­INTERFACE: No such interface supported.

We learned that one cause of this is a missing marshaler.

“But that doesn’t apply in this case, because I registered the interface and pointed it to the proxy DLL that holds the marshaler!”

Does that proxy DLL hold the marshaler?

We looked at the interface declaration.

[
    object,
    local,
    uuid(iid)
]
interface IWidgetFactory : IUnknown
{
    ⟦ ... ⟧
}

The interface is marked as local. A local interface is one that never leaves its home apartment and therefore never needs to be marshalled. The IDL compiler does not generate marshallers for local interface because they would never be needed.

I don’t know the history here. It’s possible that this interface started out as local because it was originally designed as an in-apartment object, but then the team decided to move the widget factory out of process (which now requires a marshaller) and forgot to remove the local attribute.

Or maybe the local was just a copy-pasta from elsewhere in the IDL file that they forgot to remove. (Or they didn’t realize what it meant.)

The post Unintended yet somehow entirely expected consequences of marking a COM interface as local appeared first on The Old New Thing.

17:00

Link [Scripting News]

Software internally is mostly pipes connected to other pipes, each adding a specific quality to whatever passes through it. If you have nice standards for what you send through the pipes, you can do more of what you imagine. This is called orthogonality. Factoring is when you notice a repeating pattern, give it a name, and a set of things you can do to it, those would be names of pipes. I have to ask ChatGPT what it thinks about this, but I am also asking my human friends. BTW I expect this seems so natural because our minds probably work that way too, internally, below our conscious awareness.

Here I Come to Save the Day – DORK TOWER 02.07.25 [Dork Tower]

This or any DORK TOWER strip is now available as a signed, high-quality print, from just $25!  CLICK HERE to find out more!

HEY! Want to help keep DORK TOWER going? Then consider joining the DORK TOWER Patreon and ENLIST IN THE ARMY OF DORKNESS TODAY! (We have COOKIES!) (And SWAG!) (And GRATITUDE!)

16:35

Debian looking for testers with Apple M1/M2 machines [LWN.net]

Debian's Bananas team has put out a call for people with Apple M1 or M2 systems to help test Debian on those machines:

The Bananas Team has set up an installer at with images for GNOME, KDE and console installations. While we'd like to build an actual Debian installer sooner or later (we may need a heads-up from the Debian Images team for that), at this time we only provide an asahi-type installer, which installs both the "bootloader" and the OS partitions to disk from the network (as opposed to only installing the bootloader and then letting you install Debian using a d-i USB stick). We haven't forked Trixie from Testing yet, so what you'll get is Debian Testing quite deep into the freeze.

15:49

The Netdev Foundation launches [LWN.net]

The Netdev Foundation, which is "a user-led effort under the supervision of the Linux Foundation, focused on financially supporting Linux networking development", has announced its existence.

The initial motivation was to move the NIPA testing outside of Meta, so that more people can help and contribute. But there should be sufficient budget to sponsor more projects.

(NIPA is Netdev Infrastructure for Patch Automation).

1329: Throw Back [Order of the Stick]

http://www.giantitp.com/comics/oots1329.html

15:07

[$] Accessing new kernel features from Python [LWN.net]

Every release of the Linux kernel has lots of new features, many of which are accessible from user space. Usually, though, the GNU C Library (glibc) and tools that access the Linux user-space API lag behind the kernel releases. Geoffrey Thomas showed how Python programs can access these new kernel features as soon as the kernel is released in his "What's New in the Linux Kernel... from Python" talk at PyCon US 2025. While he had two examples of accessing new kernel features, the real goal of the talk was to demonstrate how to go about connecting Python to the Linux kernel.

Copyleft-next project relaunched [LWN.net]

The copyleft-next project is an effort to develop a next-generation copyleft license; it was covered here back in 2013 (as well as in 2015 and 2021). The project has stalled in recent years, but now Richard Fontana and Bradley Kuhn have announced a new effort to push copyleft-next forward:

Today, GPLv3 turns exactly 18 years old. This month, GPLv2 turned 34 years old. These are both great licenses and we love them. Nevertheless, at least once in a generation, FOSS needs a new approach to strong copyleft.

14:42

CodeSOD: And Config [The Daily WTF]

It's not unusual to store format templates in your application configuration files. I'd argue it's probably a good and wise thing to do. But Phillip inherited a C# application from a developer who "abandoned" it, and there were some choices in there.

<appSettings>
        <add key="xxxurl" value="[http://{1}:7777/pls/xxx/p_pristjek?i_type=MK3000{0}i_ean={3}{0}i_style=http://{2}/Content/{0}i_red=http://{2}/start.aspx/]http://{1}:7777/pls/xxx/p_pristjek?i_type=MK3000{0}i_ean={3}{0}i_style=http://{2}/Content/{0}i_red=http://{2}/start.aspx"/>
</appSettings>

Okay, I understand that this field contains URLs, but I don't understand much else about what's going on here. It's unreadable, but also, it has some URLs grouped inside of a [] pair, but others which aren't, and why oh why does the {0} sigil keep showing up so much?

Maybe it'll make more sense after we fill in the template?

var url = string.Format(xxxUrl, "&", xxxIp, srvUrl, productCode);

Oh. It's an "&". Because we're constructing a URL query string, which also seems to contain URLs, which I suspect is going to have some escaping issues, but it's for a query string.

At first, I was wondering why they did this, but then I realized: they were avoiding escape characters. By making the ampersand a formatting parameter, they could avoid the need to write &amp; everywhere. Which… I guess this is a solution?

Not a good solution, but… a solution.

I still don't know why the same URL is stored twice in the string, once surrounded by square brackets and once not, and I don't think I want to know. Only bad things can result from knowing that.

[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!

14:21

Security updates for Wednesday [LWN.net]

Security updates have been issued by AlmaLinux (apache-commons-beanutils, firefox, kea, kernel, kernel-rt, libblockdev, libvpx, pam, python-setuptools, python3, python3.11, python3.12, python3.9, and sudo), Debian (chromium), Gentoo (sudo), Oracle (.NET 8.0, buildah, firefox, freerdp, golang-github-openprinting-ipp-usb, grafana, grafana-pcp, gvisor-tap-vsock, libsoup3, mod_proxy_cluster, perl-FCGI, podman, python-setuptools, qt6-qtbase, skopeo, sudo, and thunderbird), Slackware (mozilla), SUSE (redis, runc, xorg-x11-server, and xwayland), and Ubuntu (composer, linux, linux-aws, linux-aws-6.8, linux-gcp, linux-gcp-6.8, linux-gke, linux-gkeop, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency, linux-oem-6.8, linux-oracle, linux-oracle-6.8, linux-raspi, linux, linux-aws, linux-gcp, linux-gcp-5.15, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-nvidia, linux-oracle, linux-oracle-5.15, linux, linux-aws, linux-gcp, linux-gcp-6.11, linux-hwe-6.11, linux-oracle, linux-raspi, linux-realtime, linux, linux-aws, linux-lts-xenial, linux, linux-gcp, linux-raspi, linux-realtime, linux-fips, linux-fips, linux-aws-fips, linux-gcp-fips, linux-realtime, and linux-realtime, linux-raspi-realtime).

12:07

Ubuntu Disables Spectre/Meltdown Protections [Schneier on Security]

A whole class of speculative execution attacks against CPUs were published in 2018. They seemed pretty catastrophic at the time. But the fixes were as well. Speculative execution was a way to speed up CPUs, and removing those enhancements resulted in significant performance drops.

Now, people are rethinking the trade-off. Ubuntu has disabled some protections, resulting in 20% performance boost.

After discussion between Intel and Canonical’s security teams, we are in agreement that Spectre no longer needs to be mitigated for the GPU at the Compute Runtime level. At this point, Spectre has been mitigated in the kernel, and a clear warning from the Compute Runtime build serves as a notification for those running modified kernels without those patches. For these reasons, we feel that Spectre mitigations in Compute Runtime no longer offer enough security impact to justify the current performance tradeoff.

I agree with this trade-off. These attacks are hard to get working, and it’s not easy to exfiltrate useful data. There are way easier ways to attack systems.

News article.

10:28

Productivity, AI and pushback [Seth's Blog]

Typesetters did not like the laser printer. Wedding photographers still hate the iphone. And some musicians are outraged that AI is now making mediocre pop music.

One group of esteemed authors is demanding that book publishers refuse to use AI in designing book covers, recording audiobooks or a range of other tasks.

As always, this isn’t going to work very well.

Plato was sure that the invention of handwriting would destroy memory, and I’m confident there were scribes who thought that the Gutenberg press was the end of civilization. Yet, all around us, there are writers who use spell check, guitarists who use electronic pitch tuners and photographers who use digital cameras.

Productivity wins out.

Productivity is outcome focused. When we create more value in less time, the consumer comes out ahead (that’s why it’s called “value.”)

And so people don’t mind driving on streets that were paved by machine instead of by hand, or driving instead of walking. They eat in fancy restaurants that have freezers and write on paper with a pen, not a quill.

As AI expands, the real opportunity is to find a way to use human effort to create more value.

When we bring humanity to the work in a way that others demand, labor is honored and valued.

The irony here is rich: the industrial age indoctrinated us and pushed us to be less human, to be cogs in the machine. School brainwashed us into asking if it will be on the test–the test itself is an artifact of quality control, and human resources was invented to make factories more efficient.

So it comes around. Now that we’ve got a tireless computer ready to do the jobs we trained to be pretty good at, it’s human work that matters.

In the 150 years since the dawn of photography, the jobs of most painters disappeared. If you need a way to remember someone’s face, take a photo. But at the same time, the profession of original, trendsetting painter has grown remarkably. It turns out that there’s a market for paintings that are powerful, memorable and inefficient.

Systems are powerful and persistent. Often, they evolve to serve those that seek value from those systems.

It’s easy to imagine that we have a say in whether or not AI will take over the basic elements of our work as radiologists, writers or musicians. We don’t.

What we do have is agency over how we’ll thrive in a world where human work is being redefined.

Either you work for an AI or AI works for you.

09:49

Pluralistic: Tessa Hulls's "Feeding Ghosts" (2 Jul 2025) [Pluralistic: Daily links from Cory Doctorow]


Today's links



The Farrar, Straus, Giroux cover for Tessa Hulls's 'Feeding Ghosts.'

Tessa Hulls's "Feeding Ghosts" (permalink)

Tessa Hulls's debut graphic novel is Feeding Ghosts, a stunning memoir that tells the story of three generations of her Chinese family. It was a decade in the making, and it is utterly, unmissably brilliant:

https://us.macmillan.com/books/9780374601652/feedingghosts/

Feeding Ghosts is about Hulls's quest to understand – and heal – her relationship with her mother, a half-Chinese, half-Swiss woman who escaped from China as a small child with her own mother, a journalist who had been targeted by Mao's police. Hulls's grandmother, Sun Yi, wrote a bestselling memoir about her experiences in post-revolutionary Shanghai that made her both famous and notorious, in part because of the salacious details of Sun Yi's affair with the Swiss diplomat who fathered Rose, Hulls's mother.

In Hong Kong, Sun Yi's mental health declines precipitously. Some combination of mental illness and trauma – both from the horrors of the Sino-Japanese War and her torture at the hands of the Chinese police – sends her into a spiral of paranoid delusions. But Sun Yi has a community of people who feel an obligation to support her in Hong Kong, including one of her rich "boyfriends" – and Rose is sent away to a fancy, British-run girl's school dominated by expats where she acquires a cut-glass accent and learns to mix with upper-class, colonial English gentry.

Hulls is born to Rose many years later, after Rose has emigrated to the USA, attended university, married twice – the second time to Hull's father, an Englishman – and moved her mother in with her. For Hulls, growing up in Rose's household as the only Asian kid in a small American town is a series of torments. Her mentally ill grandmother lives in one bedroom, gripped by delusions, compulsively writing, fretting, begging with her few English words for Rose to come back. Rose, meanwhile, is a duty-stricken domestic saint who does all the cooking and cleaning, cares for her children and her husband, and looks after her totally isolated, profoundly disturbed mother.

Hulls grows up in the shadow of the intergenerational trauma – genocide, war crimes, colonialist discrimination, untreated mental illness, and everyday American racism – that haunts her family. Rose veers from doting to shouting, terrified that Hulls is sliding into the family's madness, unable to understand or grapple with Hulls's identity as a self-proclaimed "mixed-race" Eurasian person, born in America, unable to speak Chinese or to understand her Chinese identity.

All of this biography is interspersed through several time-hopping sections that recount the history of the Chinese revolution and the lives of Sun Yi and Rose, along with scenes from the decade that Hulls spent writing and drawing Feeding Ghosts, during which she and her mother travel to see their family in China, on a literal and figurative journey of reconciliation.

It sounds complex and confusing, but it's anything but. Each of the intertwined narratives – revolutionary China, Rose's girlhood, Hulls's girlhood, the trips to contemporary China, Hulls's adulthood and Sun Yi's institutionalizations and long isolation – are high stakes, high-tension scenarios, beautifully told. Hulls hops from one tale to the next in ways that draw out the subtle, imporant parallels between each situation, subtly amplifying the echoes across time and space.

In the final third of this long, large book, we get to the meat of Hulls's own story: her tempestuous relationship with her mother, her mother's immersion in a psychoanalytic cult, the sad demise of Sun Yi, and the wild flight of Hulls herself, in which she breaks off her stultifying engagement and teaches herself to be a bicycle mechanic and begins cycling all over the world, living on pennies and consummating her love of wild and empty spaces. At college, she becomes a cook through a weekly women's drunken pie-baking night, and somehow parlays that into a long session as a cook in Antarctica on McMurdo Station.

This final third acts as a kind of keystone to the many interwoven tales, as well as to the complex relationship between Hulls, her mother, and her own sense of self. Up until this point, the different threads of Hulls's family's story are subtle echoes of one another, motifs that repeat and vary. But in this final third, the reader – and Hulls – experience a profound psychological realization about how the three stories of these three generation of women, along with China's tumultuous history and the experience of an American immigrant all produced the person whose bold illustrations and sharp prose we've been immersed in for hundreds of pages. It's a wild moment.

Hulls's art style runs to dark, stylized inks, with horrors and ghosts puncturing individual panels' frames and wending through the page. It's a phantasmagorical experience.

Feeding Ghosts came out in March, and has gone on to win the Pulitzer Prize, only the second graphic novel in history to take the honor (the first was Maus, another memoir of intergenerational trauma, horrific war, and the American immigrant experience).

The prize is a big deal, obviously, and it's no coincidence that this kind of ambitious illustrated memoir has won both graphic novel Pulitzers. Hulls joins the annals of world-altering comic-book memoirists, from Lynda Barry to Emil Ferris (My Favorite Thing is Monsters) to Art Spiegelman and Chester Brown. She has pulled of a magnificent feat, one that illuminates history, contemporary racial and gender politics, the immigrant experience, and the impossible problems of parents and children in the aftermath of unspeakable trauma.


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 Anti-DRM badges https://web.archive.org/web/20050701004506/http://nootropic.blogspot.com/2005/06/gallery-of-drm-related-antipixel.html

#15yrsago ACLU: America is riddled with politically motivated surveillance https://www.aclu.org/files/assets/Spyfiles_2_0.pdf

#15yrsago Toronto cops justify extreme G20 measures with display of LARPing props, weapons from unrelated busts https://web.archive.org/web/20100702002151/https://www.theglobeandmail.com/news/national/toronto/weapons-seized-in-g20-arrests-put-on-display/article1622761/

#15yrsago Copyright best practices for communications scholars https://web.archive.org/web/20100628005458/http://centerforsocialmedia.org/fair-use/related-materials/codes/code-best-practices-fair-use-scholarly-research-communication

#15yrsago G20 police used imaginary law to jail harass demonstrators and jailed protestors in dangerous and abusive “detention center” https://memex.craphound.com/2010/06/29/g20-police-used-imaginary-law-to-jail-harass-demonstrators-and-jailed-protestors-in-dangerous-and-abusive-detention-center/

#10yrsago Why I’m leaving London https://memex.craphound.com/2015/06/29/why-im-leaving-london/

#10yrsago Neal Stephenson on the story behind Seveneves http://www.bookotron.com/agony/audio/2015/2015-interviews/neal_stephenson-2015.mp3

#10yrsago Brian Wood’s Starve: get to your comic shop now! https://memex.craphound.com/2015/06/29/brian-woods-starve-get-to-your-comic-shop-now/

#10yrsago BBC’s list of pages de-indexed through Europe’s “right to be forgotten” https://www.bbc.co.uk/webarchive/https%3A%2F%2Fwww.bbc.co.uk%2Fblogs%2Finternet%2Fentries%2F1d765aa8-600b-4f32-b110-d02fbf7fd379

#5yrsago NYC housing lottery favors the least-needy https://pluralistic.net/2020/06/29/female-furies/#market-failure

#5yrsago Facebook and Trump collaborate on rule-rigging https://pluralistic.net/2020/06/29/female-furies/#fb-hearts-dt

#5yrsago How to break up Google https://pluralistic.net/2020/06/29/female-furies/#braygoog

#5yrsago Female Furies https://pluralistic.net/2020/06/29/female-furies/#apokolips-now


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)

  • Uncanny Valley: A limited edition collection of the collages I create for Pluralistic, self-published, September 2025
  • Enshittification: Why Everything Suddenly Got Worse and What to Do About It, Farrar, Straus, Giroux, October 7 2025
    https://us.macmillan.com/books/9780374619329/enshittification/

  • Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026

  • Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026

  • The Memex Method, Farrar, Straus, Giroux, 2026



Colophon (permalink)

Today's top sources:

Currently writing:

  • 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

08:49

08:42

Ursign [Penny Arcade]

New Comic: Ursign

06:28

Girl Genius for Wednesday, July 02, 2025 [Girl Genius]

The Girl Genius comic for Wednesday, July 02, 2025 has been posted.

06:07

Urgent: Restore funding for vaccine development [Richard Stallman's Political Notes]

US citizens: call on the CDC to restore funding for vaccine development.

Here's how to make the actionnetwork.org letter campaign linked above work without running the site's nonfree JavaScript code. (See https://gnu.org/philosophy/javascript-trap.html for why that issue matters.)

First, make sure you have deactivated JavaScript in your browser or are using the LibreJS plug-in.

I have done the next step for you: I added `?nowrapper=true' to the end of the campaign URL before posting it above. That should bring you to a page that starts with, "Letter campaigns will not work without javascript!"

They indeed won't work without some manual help, but the following simple method seems adequate for many of them, including this one.

To start, fill in the personal information answers in the box on the right side of the page. That's how you say who's sending the letter.

Then click the "START WRITING" button. That will take you to a page that can't function without nonfree JavaScript code. (To ensure it doesn't function perversely by running that nonfree code, you can enable LibreJS or disable JavaScript by visiting that page.) You can finish sending without that code By editing its URL in the browser's address bar, as follows:

First, go to the end and insert `&nowrapper=true'. Then tell the browser to visit that URL. This should give you a version of the page that works without JavaScript. Edit the subject and body of your letter. Finally, click on the "SEND LETTER" button, and you're done.

This method seems to work for letter campaigns that send the letters to a fixed list of recipients, the same recipients for every sender. Editing and revisiting the URL is the only additional step needed to bypass the nonfree JavaScript code. I'm sure you'll agree it is a small effort for the result of supporting the campaign without opening your computer to unjust (and potentially malicious) software.

Urgent: Retract nomination of Fedex board member to USPS [Richard Stallman's Political Notes]

US citizens: call on the USPS board of governors to retract its nomination of a Fedex board member as head of the USPS.

Here's how to make the actionnetwork.org letter campaign linked above work without running the site's nonfree JavaScript code. (See https://gnu.org/philosophy/javascript-trap.html for why that issue matters.)

First, make sure you have deactivated JavaScript in your browser or are using the LibreJS plug-in.

I have done the next step for you: I added `?nowrapper=true' to the end of the campaign URL before posting it above. That should bring you to a page that starts with, "Letter campaigns will not work without javascript!"

They indeed won't work without some manual help, but the following simple method seems adequate for many of them, including this one.

To start, fill in the personal information answers in the box on the right side of the page. That's how you say who's sending the letter.

Then click the "START WRITING" button. That will take you to a page that can't function without nonfree JavaScript code. (To ensure it doesn't function perversely by running that nonfree code, you can enable LibreJS or disable JavaScript by visiting that page.) You can finish sending without that code By editing its URL in the browser's address bar, as follows:

First, go to the end and insert `&nowrapper=true'. Then tell the browser to visit that URL. This should give you a version of the page that works without JavaScript. Edit the subject and body of your letter. Finally, click on the "SEND LETTER" button, and you're done.

This method seems to work for letter campaigns that send the letters to a fixed list of recipients, the same recipients for every sender. Editing and revisiting the URL is the only additional step needed to bypass the nonfree JavaScript code. I'm sure you'll agree it is a small effort for the result of supporting the campaign without opening your computer to unjust (and potentially malicious) software.

Israeli officers and soldiers claim they were ordered to fire at civilians getting aid [Richard Stallman's Political Notes]

*Israeli officers and soldiers said that they were ordered to deliberately fire at unarmed civilians waiting for humanitarian aid.*

I find the accusation credible, given how the aid-bait sites were designed to make killing easy.

* The Israeli military has launched an investigation into possible war crimes following growing evidence that troops have deliberately fired at Palestinian civilians gathering to receive aid in Gaza.*

We can't take for granted that the investigation will seriously consider punishing guilty killers, but at least it has taken the first step towards possibly doing so.

If Israel fails to carry out a proper investigation and prosecution, I think the International Criminal Court could do it.

Andrew Cuomo may run as independent in general election [Richard Stallman's Political Notes]

Andrew Cuomo lost the Democratic primary for mayor of NYC, but he may run for night-mayor as an independent in the general election — against both Mamdani and Eric Adams.

It would be fun to see them split the opposition. Or, who knows, one of them might run as a Republican.

As many as 35,000 Ukrainian children missing [Richard Stallman's Political Notes]

* As many as 35,000 Ukrainian children are still missing and thought to be held in Russia or Russian-occupied territories, according to an American team of experts, with families saying they are being forced to take desperate and risky measures to try to rescue them.*

Cost of air pollution to Americans [Richard Stallman's Political Notes]

A study concluded that air pollution costs Americans, on the average, around $2500 per person per year as of 2014 in damage from illness or death, and killing around 100,000 people per year in the US. These harms are mostly due to PM2.5 particulates pollution, and the US has greatly reduced them by reducing the burning of coal.

We should reject the demands of the plutocratist politicians that want to preserve coal burning.

Deportation thug grabbed and carried US citizen to deportation prison [Richard Stallman's Political Notes]

A deportation thug grabbed US citizen Andrea Velez and carried her off to a deportation prison, uninterested in seeing her identification.

Her relatives hired lawyers, and it took hours for them to get any information about what happened to her. The deportation thugs said that she was arrested for assaulting a deportation thug.

I am skeptical about that claim, because she would have had no motive to bother him unless he did something wrong to her first.

Orcas used strands of kelp as tool [Richard Stallman's Political Notes]

Orcas cut off strands of kelp to use as a tool to mutually scratch with.

It requires two orcas to use the tool together, by rolling it or rubbing it between their bodies.

US intelligence parroting saboteur in chief's line on Iran [Richard Stallman's Political Notes]

*The saboteur in chief is making US intelligence parrot his line on [war with] Iran,* much as Dubya did on war with Iraq.

*[His] intervention on the issue of the damage done to Iran's nuclear facilities is also crucially important. By setting out the narrative that the spy agencies are [expected to loyally] adhere to, [he] is slamming shut a door on actual investigation and intelligence-gathering.

The saboteur-in-chief has distrusted US intelligence agencies every since they took note of signs that he was under Putin's control or influence.

Gate for aid to Gaza now closed [Richard Stallman's Political Notes]

Israel has been allowing some aid through the Gaza border wall into the north of Gaza, but closed that gate last Thursday.

Perhaps this is why the lack of any hunger games food sites in northern Gaza had not caused a total starvation there … yet.

Example of magats' performative cruelty [Richard Stallman's Political Notes]

An example of magats' performative cruelty: the deportation of US army veteran Sae Joon Park. There were excuses to deport him, and reasons for mercy. Previous administrations chose mercy; the bully chose cruelty.

The pattern of acting this way, by deporting some people, denying other people abortions and depriving yet others of medical care, is one of the basic general characteristics of the persecutor.

Supreme Court authorized states to arbitrarily exclude Planned Parenthood [Richard Stallman's Political Notes]

The Supreme Court has authorized states to arbitrarily exclude Planned Parenthood (or any other clinic or set of clinics) from Medicare funding.

South Carolina, under fanatical right-wing rule, already passed a law to exclude Planned Parenthood. This won't have much effect on abortions, which are nearly always prohibited in South Carolina. But it will impede pregnant women in South Carolina from getting prenatal monitoring and treatment.

Eliminating negative information about US from national parks [Richard Stallman's Political Notes]

The propagandist is seeking to eliminate any information that is negative about the US from national parks, monuments and historic sites. If anyone mentions that the US did something bad there, the public is asked to report it so that it can be gagged.

At the camps where Japanese Americans were jailed during World War II. this policy creates an irreconcilable contradiction. it won't be easy to explain what events those sites commemorate.

This reflects the persecutor's general priorities: loyalty over truth.

Using copyrighted work to train pattern recognizer [Richard Stallman's Political Notes]

A US court ruled that using a copyrighted work to train some sort of pattern recognizer is not copyright infringement. That means that we will not lose the right to do digital style analysis.

The recognition program that was being trained was an LLM, and it has the ability to generate output imitating the sty;e of existing works. Copyright does not cover generalities such as writing style, so it is correct that the possibility of imitating styles does not make for infringement.

Attempts to broaden copyright are typically organized by publishers with the support of famous best-selling authors, who label non-infringing uses as "theft" to convince us to surrender more of our freedom. Usually these campaigns advocate changes that we should reject.

For my view on copyright law, and how to support authors better while respecting readers' freedom more, see my speech, Copyright vs Community.

Invention for capturing CO2 emissions from cargo ships [Richard Stallman's Political Notes]

A new invention will capture CO2 emissions from cargo ships by passing the exhaust through a shipping container filled with lime.

Shipping generates 3% of all emissions, so this step is more than tokenism, but won't delay disaster long by itself. We need to demand reductions in greenhouse emissions from ground transport and agriculture.

Ukrainians who fled to UK being refused asylum [Richard Stallman's Political Notes]

*Ukrainians who fled to UK being refused asylum on grounds it is "safe to return" [to Ukraine].*

Erdoğan banned the Queer Pride march in Istanbul [Richard Stallman's Political Notes]

Erdoğan banned the Queer Pride march in Istanbul, and arrested activists who tried to hold it anyway.

When you wish to refer to bigotry against queer people, please don't use the multiply misleading term "homophobia". Bigotry and phobia are different things. A phobia is an anxiety disorder, and we cannot blame a person for suffering from one. By contrast, bigotry is a moral fault, and anyone who is bigoted ought to learn not to be.

Israel announced intention to attack east side of Gaza [Richard Stallman's Political Notes]

Israel announced the intention to attack the east side of Gaza City, and warned all civilians to leave. This suggests a plan to disregard the safety of civilians there.

Warning civilians to "evacuate" — supposing they can find an intact house somewhere else — will not excuse indiscriminate killing of civilians.

Bullshitter's stance on his Big Beautiful Bomb [Richard Stallman's Political Notes]

The bullshitter admitted for a time that his Big Beautiful Bomb probably didn't destroy Iran's uranium enrichment factory, but since then reverted to his wishful pretense. And now he has threatened to imprison journalists who published the leaked intelligence report unless they reveal their source.

We do not know whether the journalists know the identity pf the leaker(s). We can hope they do not know. But what if they do?

Their duty is to go prison rather than help the authoritarian regime lie in the future. But that takes special courage, that few people have.

A leaker could protect the journalists by fleeing and then announcing perse was the leaker. But where could perse be safe? Is there a country on Earth that would protect the leakers?

Some enemies of the US might protect the leaker, out of hatred for the US rather than out of love of human rights; but they are ruled by tyrants even worse than what the bully seeks to become. Accepting shelter from such a tyrant would not be a defense of freedom and truth.

(Remember that Snowden did not choose to live in Russia. He bought tickets for a connection in Moscow, but while he was in the air, the US cancelled his passport, so he could not board his flight out of Moscow.)

02:35

Junichi Uekawa: Japan is now very hot. [Planet Debian]

Japan is now very hot. If you are coming to Banpaku, be prepared.

01:49

Dinosaurs Deserve So Much Better Than Jurassic World Rebirth [The Stranger]

At the end of my screening for Rebirth, a movie that sucked shit, the audience clapped. by Dom Sinacola

Jurassic World Rebirth will bring in a billion dollars at the box office. Which makes this review mostly inconsequential. Look in your heart; you know this to be the case. Despite unanimous critical consensus that the franchise's previous film Jurassic World Dominion (2022) is execrable, it still made somewhere around $1.4 billion. You don’t need me to tell you whether or not to pay for a ticket to Jurassic World Rebirth; you statistically will anyway. 

Maybe this is just another sign that critics are meaningless vestiges of the movie industry. As some folks on the internet like to say: Facts don’t care about your feelings. In the place of discerning taste and nuanced discourse, there is only the knowledge that there will always be another Jurassic movie, another summer blockbuster overrun by more immense and scarier monsters than the last one, motivated by one more fictional rich asshole ignoring history to spit in God’s face, accompanied by one more A-list actor with an eight-figure price attached to their dignity. At the end of my screening for Rebirth, a movie that sucked shit, the audience clapped. 

Oh well. This is the march of progress unabated, manifest in franchises that never end, in successive features with titles that become more and more interchangeable and sometimes use colons like gateways to subterranean barrel bottoms heretofore unscraped by directors who are more project managers than anything. Except Jurassic World Rebirth, like Dominion, doesn’t have a colon in its title (ironic, because it’s so full of shit, etc.), and, like Dominion, isn’t even really a dinosaur movie anyway.

Rebooting three years after the “events” of Dominion, Rebirth uses overly expository TV news coverage to catch us up on the prehistoric creatures who, following the disasters of Jurassic World and Jurassic World: Fallen Kingdom, broke free of containment—nature “found a way” as franchise philosopher Dr. Ian Malcolm (Jeff Goldblum) opined—and, for a short time, coexisted with humans.

Now, the remaining dinos who weren’t wiped out by climate change and disease have congregated along the equator, mostly on small tropical islands where we’re told that the hot, “oxygen-rich” environs best match that of the Cretaceous period, or something.

We’re also told that public interest in dinosaurs is waning, that people just aren’t romanced by the same old spectacles anymore. As the world moves on from getting gobsmacked over what was once a technological miracle, uber-wealthy wads like pharmaceutical exec Martin Krebs (Rupert Friend) must find new ways to exploit the creatures. 

Luring her in with the promise of a small fortune, Krebs convinces Zora Bennett (Scarlett Johansson), a mercenary riddled with PTSD, to accompany a small team into the equatorial Dino-Zone—no humans allowed, according to “every” country on Earth, a collaborative international decree that is a more fantastical concept than dinosaurs coming back to life—and retrieve some samples of dino DNA for the purposes of pharmaceutical research. 

Zora knows the trip is a huge risk, especially because the dinosaurs whose DNA they must extract are supposedly the largest animals to ever exist on the planet, a statement the audience just sort of accepts because every new Jurassic film introduces the newest, worst, and/or best dinosaur varietal. Hyperbole has lost all meaning when the same shit just keeps happening. Every attempt to harness genetic power, to build one more bigger and assuredly better theme park attraction,  has been met with mass death and generational punishment. But also: That money’s just too good.

Archetypes aggregate. Krebs talks the obligatory self-righteous paleontologist, Dr. Henry Something (Jonathan Bailey), into joining the expedition, providing a beautiful nerd to conjure up the basest unrequited sexual tension with ScarJo’s ceaselessly competent soldier. Soon, Duncan Kincaid (Mahershala Ali), an old mercenary cohort of Zora’s with comparable trauma, signs on as well, because a broken man must nobly sacrifice himself at some point in these films. And he has a boat they can use. 

Completing the crew are a smug hot-shot (Ed Skrein), a quiet and helpful French-speaking man (Bechir Sylvain), and a woman whose personality swaps between Dancing and Murdered (Philippine Velge), all requisite dinosaur fodder. Thusly, we embark on a jungle cruise, vaguely reminiscent of Apocalypse Now, into the heart of darkness, i.e., an unnamed island in the Pacific Ocean off the coast of French Guiana. 

Meanwhile, a father (Manuel Garcia-Rulfo), adorable young daughter (Audrina Miranda), college-bound daughter (Luna Blaise), and the oldest daughter’s dipshit boyfriend (David Iacono) use that same summer to sail across the Pacific Ocean on a 40-ft sailboat, because that’s a reasonable thing to do. The family inevitably crosses paths with Zora’s team, the cast ballooning to more paper-thin characters than any brain can conceivably care about. So when they make it to the island and discover that it’s teeming with genetically cross-bred dinosaur mutants and everyone starts dying at the jaws of hyper-real digital freakazoids, you may also feel dead inside.

Director Gareth Edwards has proven capable of spectacle, especially in conveying an upsetting sense of scale in something like 2014’s Godzilla, but in Rebirth, every incomprehensibly huge beast is immersed in a surreal melange of uncanny environments. Edwards affords a few fleeting moments for characters to soak in what they’re witnessing with astonishment—refuting the film’s earlier claim that people can’t feel much for these dinosaurs anymore—but then pulls the frame back to a giant vista covered with giant dinosaurs, and suddenly the weightlessness of the vision takes over. The magic’s extinguished.

Completely gone is the awe of Steven Spielberg’s 1993 Jurassic Park—gone is the cosmic terror and jubilation of seeing a dinosaur. Maybe that seems quaint in retrospect, now that we have the power to “see” anything we can ostensibly imagine. But if that first film is about the visceral power, and irrevocable cost, of creating such a momentous spectacle, then every sequel since has been about what a bad idea it is to make sequels.

Because sequels are inherently evil. I’m sorry to put this so bluntly, but it’s true. The Jurassic World movies act as if they are warning against our idiotic nature to take everything good about popular art and grind it down to the nub, but that’s exactly what those films and those filmmakers are doing, giving into the loudest morons and the elemental forces of capital to ruin all beloved cultural artifacts via lifeless, juiceless rebirths. We cannot leave anything well enough alone. 

Toward the beginning of Jurassic World Rebirth, Dr. Henry sighs, "Nobody cares about these animals anymore. They deserve better." It's hard to disagree. Dinosaurs—the real creatures who represent so much fascination and curiosity and wonder that we’ve pretty much ejected from our collective dreams—deserve so much better than this. 

In fact, you deserve so much better than this.

Jurassic World Rebirth opens in wide release Fri July 4.

01:14

Link [Scripting News]

More feedback on the design of Bluesky's API.

01:00

Last Month This Month [The Stranger]

All the headlines you may have missed in June. by The Stranger's Slog AM™️ Specialists

Last Month This Month is a recap of all the previous month's news, featuring headlines from Slog AM. Find it in every issue of The Stranger! Subscribe to our daily Slog AM newsletter hereThis story originally appeared in our Primary Endorsements Issue on July 2, 2025.

June was full of ups and downs. Donald Trump threw a $45 million birthday party; no one came to Donald Trump’s $45 million birthday party. Greta Thunberg went to Gaza; Greta Thunberg was detained in Gaza. A war between Israel and Iran began; a war between Israel and Iran ended. Here’s what else happened last month:

*  *  *

The Navy, which isn’t gay at all, started the month by announcing plans to take gay civil rights hero Harvey Milk’s name off a ship. The Pentagon said in a statement that all Department of Defense names should reflect three things: Trump’s priorities, US history, and the “warrior ethos.” So butch. The Navy is also considering new names for the USNS Thurgood Marshall (too Black), the USNS Ruth Bader Ginsburg (too woman), the USNS Harriet Tubman (too Black and too woman), who literally fought in the US Civil War. 

*  *  *

The same week that the Supreme Court upheld a Tennessee law that bans puberty blockers, hormones and (the rare) surgery for minors, the Trump Administration announced they would be cutting the 988 Suicide & Crisis Lifeline’s LGBTQ Youth Specialized Service, effective July 17. As Abe Asher wrote in our Queer Issue in June, the Trevor Project saw a “700-percent increase in young people reaching out to crisis services” the day after November’s election. How nice of the feds to take our calls through Pride Month. The Trevor Project will continue to offer 24/7 help 365 days a year to folks 24 and younger, via text, phone, and online chat, and the Trans Lifeline is also available by calling 877-565-8860 or visiting translifeline.org. If you want to really piss Trump and RFK Jr. off, you can also donate to both organizations online. Fuck your conditional federal funding, assholes.

*  *  *

In other wrinkly old dickbag news, Amsterdam’s national Rijksmuseum is displaying what is believed to be the world’s oldest condom. Historians say it was fashioned from a sheep’s appendix sometime around 1830, which hits so right for Shepherd/Flock play. The 200-year-old prophylactic even has a kinky little illustration showing a nun with her habit hiked up (with no underwear in sight) and three clergymen who’ve lifted their robes to present three rock-hard erections, in case its use wasn’t clear. Unrelated, remember when people used to draw dicks in text like this? 8==D 

*  *  *

The Seattle City Council almost voted to toss our ethics code in the wastebasket. If their “reform” passed, it would have allowed councilmembers to vote on issues that benefited them, so long as they disclosed conflicts to the public. After weeks of protests and thousands of emails and public comments opposing the change, Councilmember Cathy Moore withdrew the bill before the vote could happen. The people were heard! Immediately afterwards, Moore also announced she would be stepping down just a year and a half into her four-year term, citing health issues. Moore is the second councilmember to leave her position early this year—Tammy Morales vacated her seat in January. Confidential to all CMs we endorse in this month’s issue: If you win, DON’T FUCKING QUIT.

*  *  *

While Moore’s quitting, Rob Saka’s yelling at clouds curbs. Again. In a 2,100-word email newsletter, Saka lost his ever-loving mind about the people who opposed his pet curb project. He accused the people who opposed removing an eight-inch curb that blocks illegal left turns into his kids’ preschool of, somehow, simultaneously: supporting Trump’s anti-immigrant policies, being part of the “Defund the Police” movement, and partaking in “White Saviorism” (capitalization his). Someone take his computer away and give him a paper bag to breathe into. 

*  *  *

When they weren’t quitting or screaming at concrete, the Seattle City Council was productive. Some good moves, some bad. In the bad column: they voted 8-1 to approve SPD’s use of StarChase’s GPS launcher and passed a bill to install privately owned 8-foot-tall digital advertising kiosks throughout the city. In the good column, they voted unanimously to pass a ban on rent-setting software like RealPage.

*  *  *

There were No Kings protests in all 50 states, and the ACLU estimates that at least 5 million people hit the streets. They were largely peaceful rallies, with the exception of Salt Lake City’s. There, according to police, 24-year-old Arturo Gamboa had an AR-15-style rifle in his backpack. Two armed, non-police “peacekeepers” saw Gamboa lift the gun as if to shoot it, and one of them shot him, also accidentally shooting and killing a fashion designer named Arthur “Afa” Folasa Ah Loo in the process. Everyone involved is in custody, and everyone would be better off if we had better gun-control laws.

*  *  *

The US has detained a record-breaking number of immigrants. By the end of June, more than 56,000 people were locked up in ICE facilities, and, according to one Syracuse professor, more than a third have zero criminal records. This is fucked. The ICE arrests are so rampant that organizers cancelled this year’s Duwamish River Festival because participants are concerned about being targeted by immigration enforcement. A glimmer of good in the nightmare: Lewelyn Dixon, a Filipino green-card holder who worked at the University of Washington, was able to go home after a judge ruled she doesn’t qualify for deportation. 

*  *  *

Leopards are eating faces over there in Redmond. Microsoft is planning to lay off thousands of employees in July as it funnels spending into artificial intelligence (John Connor, where are you?). This news comes after the company already axed 6,000 jobs in May. Washington State University also announced layoffs—the school plans to cut “a little over 4 percent (more than $17 million)” from its budget. And SIFF’s struggling, too; the org laid off nine full-time workers across multiple departments. SIFF Executive Director Tom Mara wrote the 21-percent reduction in administrative staff was “necessary” during a “financially challenging time for SIFF and for arts nonprofits across the country.” Oh, and Din Tai Fung did wage theft and everyone who works at the Louvre fucking hates the Mona Lisa.

*  *  *

Too on the nose? On June 18, while Trump weighed the pros and cons of getting involved in the Israel–Iran conflict (which he eventually did, without talking to Congress, which is illegal), an unmanned SpaceX spaceship blew the fuck up. This is not supposed to happen in rocket science, we’re told.

*  *  *

Jeffrey Bezos and his alive girl Lauren Sanchez are finally tying the knot. They are doing so by—checks notes—renting out the entire island of Venice? Protesters chased the billionaires from their original venue by threatening to fill the canals with inflatable crocodiles. (Or was it alligators? None of us are from Florida and we do not know the difference.) Too bad the foam party on Bezos’s $500 million superyacht off the coast of Europe couldn’t be stopped. Those grainy images of a shirtless, foamy Bezos in a bucket hat need to be scrubbed from our minds. 

Tuesday, 01 July

23:28

22:35

Call for volunteers: Help us with the GNU Press shop [Planet GNU]

People around the world are eagerly waiting to receive their GNU Press shop orders, and we need a little help sending everything out. Would you be willing to donate a little of your time to support the FSF's work while chatting and enjoying snacks with other free software supporters?

21:56

Donkey Kong Country 2 and open bus [OSnews]

Apparently, Donkey Kong Country 2 has runs into a bug in the old SNES emulator ZSNES, where one of the barrels that you’re supposed to be able to precisely control the spinning direction of ends up spinning forever.

This bug is caused by ZSNES not emulating open bus behavior. I believe this was originally discovered by Anomie roughly two decades ago, who subsequently fixed the same bug in Snes9x. This original fix hardcoded the specific addresses to return the values that the game depends on rather than properly emulating open bus, but it fixed DKC2 and probably didn’t break anything else. The bug was never fixed in ZSNES, which is now a long abandoned project (last release in 2007).

Purely out of curiosity, I wanted to dig into this a little more to figure out what exactly in the game code causes these barrels to spin forever in an emulator that doesn’t emulate open bus behavior.

↫ jsgroth

Just in case you’ve always wanted to know.

21:07

Ben Hutchings: FOSS activity in June 2025 [Planet Debian]

New Music You Shouldn't Miss [The Stranger]

Francis Bebey's Crucial Archival Haul and Ambient Sundays' Exquisite Chillouts
by Dave Segal

Every day, I sift through the hundreds of tracks that bombard my inbox. On a biweekly basis, I tell you about the two artists whose music most impressed me. This time, it's the late Cameroonian electronic-music innovator Francis Bebey, who has a fantastic new archival comp out, and Seattle synth duo Ambient Sundays, whose name hints at their aim to chill you the eff out.

Francis Bebey, “Forest Nativity (extended version)” (Africa Seven)
Most people in the West learned about the late Cameroonian musician Francis Bebey through excellent collections such as African Electronic Music 1975-1982 and Psychedelic Zanzu 1982-1984, released by the French label Born Bad. A segment of the population also may have discovered him via mid indie rockers Arcade Fire's "Everything Now," on which Patrick Bebey played the flute motif from his father's supremely infectious "The Coffee-Cola Song." (Good luck finding affordable original copies of Francis's studio LPs in the US. However, many of them are on streaming platforms.)

Bebey (1929-2001) augmented his warm, conversational vocals in Duala, French, and English with kalimba, percussion, flute, and guitar; on the latter he was influenced by Spanish classical master Andrés Segovia. The pervasive vibe on these records is low-key, fluid, and seductive. The songs are sparsely constructed and slyly inviting, a subtle combination of organic and electronic elements. Especially on Psychedelic Zanzu, the sound is slinky and chill, and if you're into tantric sex, you could find a worse way to soundtrack that activity than this LP. 

The new Trésor Magnetique comp gathers 20 "unreleased tracks, alternate versions, archival recordings, and neglected gems from Bebey’s legendary vault." I'm a fan of the aforementioned collections, but Trésor Magnetique might even surpass those in quality and consistency—remarkable for an odds-and-ends release. 

One of the most prominent sounds in Bebey's wonderful songs is the kalimba (aka thumb piano), which produces resonant metallic tones that are as spine-tingling as those generated by the vibraphone. The kalimba inevitably makes me think of gently flowing water and the concomitant calmness that springs from it. Case in point is "Forest Nativity (extended version)." Its undulating kalimba and forlornly beautiful flute, embellished by understatedly soulful backing vocals, is trés hypnotique. Yet it could easily be retrofitted into an experimental techno banger. In a sagacious voice, Bebey recites, "Life is good, you'll see / Come into the world, my child." Those were different times...      

"Ganvie" is another proto-experimental-techno banger with keening flute and resonantly clanking kalimba. "Le Grand Soleil De Dieu" sashays in a nonchalantly funky manner, with a stately synth melody for which OMD would kill. I can imagine this cut animating legendary cosmic-disco DJ Daniele Baldelli's '70s sets. "Agatha (alternate version)" boasts an incredible corkscrewing bassline by Jean-Claude Ebongue that anchors an ebullient funk jam, while the care-free pop-funk "L' Amour Malade Petit Francais" sways like a tropical Serge Gainsbourg joint. "Funky Maringa" is not quite on the explosive level of funkiness of fellow Cameroonian Manu Dibango, but it does have a sassily bumping groove and celebratory air. 

If sociopolitical lyrics matter to you, you'll revel in majestic synth- and drum-machine-powered slow-roller "La Condition Masculine (English version)," which spoofs patriarchal attitudes, and "Dash, Baksheesh & Matabish," a sweet denunciation of corruption. Admittedly, Bebey was not a conventionally great singer, but he wrung poignancy, wit, and wisdom from his limited pipes.      

Francis Bebey's music isn't so much ahead of its time as it is outside of time altogether. With his unique combination of instruments and timbres, he was in his own bold lane, making specious categories such as "world music" seem glaringly insufficient. 

Ambient Sundays, "sunday morning" (We Coast Records)
Ambient Sundays' name is almost too on the nose—especially if you regularly listen to Alex Ruder's Pacific Notions show on KEXP, which airs on the alleged Lord's day. Maybe it's a coincidence that Ambient Sundays member Diana Ratsamee also DJs on that radio station (check out her Thursday night show, Eastern Echoes), but whatever the case, the Lao-American musician/producer and bandmate and We Coast Records boss Anthony Warner have hit upon a winning sound with their self-titled debut album

Using all analog synthesizers (various Rolands, Oberheims, and Sequentials), Ambient Sundays get down to the important business of chilling out listeners with their emotive minimalism. "Lullaby sunrise" conjures a deeply moving and sonorous synthscape of chakra-opening tones à la New Age savant Steven Halpern and the late, great Ariel Kalma. "The final call of opportunity" presents a series of heartbreaking melody modules in the vein of Hans-Joachim Roedelius. 

The cutely titled "this is you as a baby" offers a gentle, amniotic tone bath that'll drop your pulse rate by 33 percent while "yellow cabin by the sea" creates a feeling of poignant desolation, with tranquil tidal flow in the background. Diverging from the rest of the album, "a place to call home" features Ratsamee's delicate, mysterious vocals on this low-key, glowing orb of a track that made tears well up in your blogger's eyes. "Sunday morning" is not a Velvet Underground cover, but rather a sublime upswell of becalming, ice-blue synth textures.

With the Israel-Iran conflict escalating by the hour, the odds are stacked against any musicians attempting to soothe anxious doom-scrollers, but Ambient Sundays succeed with this glimmering soul balm. 

19:56

Link [Scripting News]

Bullshit. Lisa Murkowski goes on a press tour and sounds like she could be the one that breaks away from Trump in the Republican Senate. As with all of them, always, it was an act. She has a role to play, she's The Agonizer. They are amazing in terms of how organized and orchestrated their campaign is.

18:49

Quickies [The Stranger]

Got a relationship problem? A burning sex question? A burning… sensation? by Dan Savage 1. What advice do you have for young people who want to have an open conversation with their partners about changing aspects of their sex life to make it more pleasurable without hurt feelings or awkwardness? What’s more likely to lead to major hurt: A few awkward conversations now that (hopefully) lead to better conversations (and sex) in the future? Or… avoiding awkwardness and eventually reaching a point down the road where the sex isn’t that great so you have it less and less until one of you cheats or leaves? Your choice. 2. Dealing with cultural differences: My boyfriend is Italian and weirdly superstitious; at times, it’s anti-science. Not sure what to do here. Keep your mouth shut, your legs open, and get that EU passport. 3. Do you like tighty-whities? What’s not to like? 4. We’re two late-blooming bi people in a monogamous relationship. We have small children.…

[ Read more ]

The Best Things To Do in Seattle This Month: July 2025 [The Stranger]

Capitol Hill Block Party, Washington Midsummer Renaissance Faire, and More
by EverOut Staff

Whether July makes you think of hot dogs and fireworks, air-conditioned movie theaters, outdoor concerts and performances, or ice-cold beverages, you'll find tons of things to do this month that will allow you to soak up that coveted Seattle sunshine now that summer is in full effect. As we do every month, we've compiled the biggest events you need to know about in every genre, from Capitol Hill Block Party to The Weeknd: After Hours Til Dawn and from the Seattle Art Fair to The Washington Midsummer Renaissance Faire.

FESTIVALS

Seafair 4th of July
Though I'm firmly in the drones > fireworks camp, I hear some people out there still like their big, fiery booms. If that's you, find a spot with a view of Lake Union and prepare for quite the spectacle. Both Gas Works and Lake Union Park host food vendors and an All-American games competition with classics like sack racing, tug-of-war, water balloon toss, and a pie eating contest. You'll find live bands like high-energy ensemble Lindstrom & The Limit at Gas Works and a long putt challenge and coloring wall in SLU. Though the event is generally free, you can pay to reserve a seat in a gated-off section with security. While this might be good for safety, it's a bummer for those who want to BYOB. Plan accordingly! (Godspeed to anyone crossing a bridge after the fireworks end; traffic's a nightmare.) SHANNON LUBETICH
Gas Works Park & Lake Union Park (Fri July 4)

Slog AM: We’re Paying More for Gas (Good), Worms Are Eating the Trees (Bad), Senate Passes Trump's Budget Bill (Ugly) [The Stranger]

The Stranger's morning news roundup. by Vivian McCall

Pride Month Is Over: Time to re-paint the rainbow crosswalks, get back in the closet, throw that #Pride merch into a landfill, and finally force those gay penguins into divorce. Anyway, we’re tired of rainbows. It’s America month, where at least you know you’re free unless you’re most people. Come claw or beak, we will hug a bald eagle in a metaphysical way. And on Saturday, the sun will rise over a great nation. One that listened to “Born In The U.S.A.” approximately one-hundred billion times and didn’t understand a word. If everything is just right, we’ll end the week with fewer uncle fingers than we started with. (Edit: Okay, the original gay penguins broke up in 2005, and they’re bisexual. People also say they’re dead, but that’s unclear. I’ve reached out to Central Park Zoo for confirmation. Here’s another dead gay penguin from Australia whose partner Magic “seemed relatively normal since his loss.” Diego and Zorro are about to celebrate 10 years and they loved our fisting piece.)

Jag skrattar till lite varje gång den dyker upp i flödet.

[image or embed]

— Niclas (@ebmgubben.bsky.social) May 5, 2025 at 11:59 AM

 

The Mariners Beat the Kansas City Royals at T-Mobile Park: And Randy Arozarena hit his 100th home run. Arozarena, if you’re reading, I know only one way to congratulate you (I lack baseball knowledge). Enjoy:

On the Up and Up? The fuel tax rose 6 cents ($0.494 per gallon to $0.554) today. To keep pace with inflation, it’ll go up an additional 2% per year, generating about $1.4 billion in revenue over the next six years. Cool! But also federal cuts. And that $16 billion budget shortfall. When you wake up in the middle of the night for a glass of water, expect Gov. Ferguson hunched over your kitchen table in a hushed conversation with Mom. Avoid the squeaky floorboard when you tiptoe back to bed!

Time Is Running Out for Tuan Phan: Born in Vietnam, Tuan Phan served 25 years for murder in Washington. When he finished serving his sentence in March, the Washington Department of Corrections handed him over to ICE, and sent to Djibouti, where he’s been held in a shipping container for months. And now he’ll be deported to South Sudan unless Governor Ferguson pardons him. His lawyer Angélica Cházaro told KUOW Ferguson better do it while Tuan Phan is still at the  US military base in Djibouti because his return is not guaranteed if he’s sent to South Sudan.

A Hairless Eastern Washington Pest Is in the North Cascades: Not your ex from Spokane on a hike. The western spruce budworm. We don’t love this worm (even if it were a worm). It loves to eat the new growth on fire trees. You’ll see its wrath in the trail of orange trees along Highway 20. By August, they may turn brown and dead-looking. It’s a young, modestly-sized (63,000 acres) outbreak, and not unheard of, but an entomologist told The Seattle Times it's odd to see them outside the Cascade Crest.

More About Fireworks: SeaTac cancelled their show. City officials say they didn’t have enough cops. (Last year, they had ten cops for the 10,000 people in a park made for 3,200 max.) Or maybe that’s a cover and they’re still embarrassed about the 55 drones that fell into Angle Lake during the performance. “The drone mishap is not the reason for the cancellation,” said SeaTac’s comms person, not defensively at all.

Weather? Sorry rain-enjoyers, but it’s nice and hot and sunny today. Perfect weather … perfect weather … until a scream echoes across the lake. Your uncle is clutching his wrist, what's left of his hand. Crazily, you think about the dream guitar he bought last month, hanging on the wall in his den. Just like the Stratocaster he had in high school. The one he sold for a wedding ring, but she turned him down. He’ll never play “Smoke On The Water” again.

So … Back To Fireworks: There’s absolutely nothing funny about blowing off your hand with an illegal bomb you bought on the side of the road from a man named Moustache Pete. How could something like that happen? “Having fingers” is not a radical ideology (yet) so, as usual, the US Consumer Product Safety Commission posted its excellent anti-commercial for fireworks. Watch these mannequins blow up instead of your intoxicated or foolish loved ones! I know it’s a few days early and the national mood is low but … blowing shit up is bipartisan.

 

Don't do any of this.

[image or embed]

— U.S. Consumer Product Safety Commission (@cpsc.gov) June 27, 2025 at 11:28 AM

 

The Law: Personal fireworks are illegal in Seattle and King County … much of Snohomish County most of the time … and unincorporated Kittitas County … and in Olympia, Tumwater, and Lacey … but I just know you some of you sick lawbreaking fucks will blow them up anyway. So I’ll play the mother who prefers you drink in the house: Have a fucking bucket handy so we have an environment. Or, test your empathy. When you feel an irrepressible urge for powpow to go boom-boom, imagine a dog’s sad, scared eyes.

Also, picture your dumbest friend. Now please share this fire danger map with said dumbest friend. Then show them the aforementioned mannequin movie. Make sure to tell them the people are not real.

He Did It: Brian Kohberger, the most obvious murderer since O…uh, Oswald—Lee Harvery Oswald—pleaded guilty to murdering four University of Idaho students. He took the deal to avoid the death penalty. Capital punishment disgusts me, and I don’t find breathless coverage of a real murder of real people entertaining, but watching the evidence pile up in this case has been something else. His defense sucked.

Democrats Lay Groundwork for “Project 2029”: Naming the Save Democracy Plan after the Destroy Democracy Plan is ridiculous. And since Dems at a liberal policy journal put it together, it’s not actually a plan yet. It’s a publicly announced plan to have a plan. Know that friend who is always getting his shit together and never does? At least he’s listening to the shitty voice inside his head and not … the shitty voice inside everyone else’s (read: polls). Hint: Dem strategists think they have a style problem, not substance problem. Double dog dare y’all to have a single idea, or God forbid, propose a popular economic policy instead of hand wringing over who first to throw under the big blue bus.

Since We’re on the Subject: Democrats can’t tell what is and what is not an extreme anymore. A problem with an autocrat in the White House and perhaps more on the way, or just more “four more years” until the autocrats is fresh out of “four more years.” Institutional Dems are freaking out about Mamdani. They should be freaking about ICE breaking the law, basic morality, and expectations that law enforcement identify themselves with a fucking uniform. Charles wrote about it here. Dems should also be freaking out about…

The Republican Denaturalization Plan: The Justice Department wants to strip Americans of their citizenship and is prioritizing cases involving certain crimes—including fraud, threats to national security, and in one case, distributing child porn. Child porn is obviously a serious offense. So serious that the Trump administration can plausibly deny what it’s doing. Don’t be fooled. According to a memo, Trump’s DOJ is pursuing denaturalization via civil litigation. One attorney told NPR that’s especially concerning. The people in those cases have no right to an attorney. No right! Another attorney told NPRwhose funding is being targeted by the federal government for accurately reporting the news—that the DOJ is expanding which crimes threaten a person’s citizenship. What’s next? And what if the accused is innocent? Hell, what if they’re guilty? Does this sound like justice?

Musk Threatens New Political Party if Trump’s Big Beautiful Bill Passes: It’s called the Apartheid Party Rocket Blow Up Party Blow Up My Car Party Grimes Take Me Back Party America Party. Uh oh! A third party? Republicans are probably scared. Third parties always move the needle.

BREAKING: After a session that lasted more than 24 hours, the Senate just passed Trump's very ugly Big Beautiful (budget) Bill. VP JD Vance broke a 50/50 tie. Now it's headed back to the House. 

Trump To Visit New, Remote Detention Center in the Everglades: Will he feed the alligators little meat cubes on a stick (Floridians know), or is he just visiting to savor impending human misery?

Deerhoof will remove its music from Spotify over CEO Daniel Ek’s $700 million investment in an AI company making military tech. We need a new law to strap tech moguls to a chair and make them watch Terminator and Terminator 2 until they get it. Here’s Deerhoof’s bandcamp. Start with The Magic.

More Terrible, But Trivial News: They’re making a Project Hail Mary movie, an airport bookstore buy so bad I’d have raw-dogged the flight if I hadn’t had a Kobo handy. Normally, I give a book at least 45 pages. But I stopped on page 4, right around the fourth paragraph of the narrator sardonically pulling a space tube out of his ass. But I guess we get to see Ryan Gosling do it. And you thought Pride was over!

Gee, I Sure Am Fun Today: Sorry for the bummers. I’m usually all business and skip the song. No longer! Here’s R.E.M. on the Old Grey Whistle test playing “Pretty Persuasion,” an early banger off Reckoning, when you still couldn’t tell what the hell Michael Stipe was singing about. I prefer my R.E.M. incomprehensible, but am down with everything from Murmur to Monster (and, why not, a little New Adventures in Hi-Fi).

Bonus: My friend shared this great Dougie Poole song with me over the weekend. It’s called “Nothing on This Earth Can Make Me Smile.” It should be “Nothing on This Earth Can Make Me Smile, Except Dougie Pool Playing ‘Nothing on This Earth Can Make Me Smile.’”

18:00

The sizzle reel that says things that nobody understands [The Old New Thing]

At the end of project milestones, some organizations have a tradition of asking each team within the organization to produce a a “sizzle reel” highlighting the work that they have accomplished. These short videos are then gathered together and shown at the organizational group meeting so everybody can show off their work and receive appropriate kudos from other teams in the organization.

Another source of these “sizzle reels” is a group showing off its work as a form of advertisement. For example, a team may have developed a new tool or technology and want to get the word out. Or they may have made improvements to their existing technology, and they want to announce the next revision to their existing customers.

One thing I would like to remind people who are creating these short videos: Understand your audience.

It is not uncommon for these little videos to brag about accomplishments in terms that are not comprehensible to people who aren’t on the team.

We are always working on improving performance, and during this milestone, we tried out a new way to turboencabulate the dependency net, which produced a metonomic phase cycle period of 15 milliseconds.

Like, I’m happy for you though, or sorry that happened.

Go ahead and include those details if it makes your team feel good. (Particularly the developers who worked hard on the new turboencabulator.) But please also give a brief explanation that makes sense to the outsiders who are watching your video.

On large data sets, we found that this lowered run times by as much as 30%, though improvements of 10% are more typical.

The post The sizzle reel that says things that nobody understands appeared first on The Old New Thing.

15:49

GNU Health Hospital Information System 5.0 released [LWN.net]

Version 5.0 of the GNU Health Hospital Information System has been released. This project, working to support medical offices, shows just how far the free-software effort can reach. Changes in this release include improved reporting and analytics, more comprehensive handling of many types of patient information, a reworked medical-imaging subsystem, better insurance and billing functionality, and more.

15:14

The Big Idea: Matthew Kressel [Whatever]

Hop on board for author Matthew Kressel’s newest ride through the galaxy, Space Trucker Jess. In this Big Idea as he takes you through not only his writing process for this particular story, but on a journey through a high-concept sci-fi world viewed through the eyes of a teenage girl.

MATTHEW KRESSEL:

I was a feral kid. Both my parents worked full-time jobs, and I’d come home to an empty house. I had no supervision. I went off with friends and we, ahem, did things. Stupid things. Really fucking stupid things. And when I look back on those days I’m like, How the hell did I make it out alive?

But that freedom was glorious. You could do whatever you wanted. Go anywhere. You had the feeling that anything could happen. And it often did. The good and the bad.

That’s the kind of feeling I hope to evoke in Space Trucker Jess. The joy and spontaneity of discovery. In my childhood, we got into trouble all around the neighborhood. In my novel, Jess gets into hijinx across the galaxy. 

Like Jess herself, I began the book with a simple premise: Screw the “rules.” 

In my past stories and novels, I labored over every paragraph, sentence, word, and punctuation mark until I’d wound myself into a Gordian knot a million words long. In Jess, I felt the need to loosen the bridles, to let my idea run wild, like that feral kid who got into trouble around the neighborhood. What emerged was Jess, a take-no-shit foul-mouthed kick-ass teenaged girl who’s smart as hell, caring and empathetic, who solves problems not with violence but with brains and determination. Though too often for her own good, Jess’s curiosity gets her into trouble. Big trouble.

Think Natasha Lyonne narrating 2001: A Space Odyssey.

There’s lots of high-concept SF, and, yeah, Space Trucker Jess has all the tropes: starships and FTL travel, alien gods, missing planets, galactic secrets. But I wanted to tell the story a different way. Not from an omniscient or a dry and distant third person, but from deep in the point of view of a sensitive and expressive girl who’s journeyed across the Milk and back a thousand times and who knows more about starships than most people know their own nose. 

And so you get high philosophy and fart jokes. Orthodox religion and irreverent sacrilege. Weird inscrutable aliens and deadbeat dads. All told from a foul-mouthed over-confident, wicked-smart and sometimes willfully naive girl who just wants, at the end of the day, to be left the hell alone.

Space Trucker Jess is also about identity. I wrote a good chunk of the book during the first Covid lockdowns. Cut off from friends and family, from work and all the many inter-personal relationships I took for granted, I felt my sense of self drifting. Without those external interactions reflecting my identity back to me, I didn’t know who I was anymore. It was very disconcerting. 

A lot of that experience makes its way into the book. Jess’s worldview expands enormously throughout the novel, sometimes suddenly and violently, and she is forced to reckon with a new sense of self and a greater awareness. 

Also, Space Trucker Jess is about family. Jess loves her deadbeat dad, and she and him have been grifting their way across the galaxy for years. But she knows he’s an asshole, he knows he’s an asshole, but she just can’t let him go. The relationship is, from the start, highly dysfunctional. Jess just wants stability, away from him. But getting away is harder than it sounds. Without getting too personal, I had a lot of turbulence in my childhood home, and I wanted to explore the contrasts between the family we’re born with and the family we choose, and how those dynamics can alter the course of our entire lives, for better or worse. 

So if you want to go on a fun adventure alongside a bad-ass genius girl head-firsting her way through the galaxy who’s just looking for some peace in an uncaring universe, while encountering alien gods, missing planets, galactic secrets, and more, well then, Space Trucker Jess might just be your ride.


Space Trucker Jess: Amazon|Barnes & Noble|Bookshop|Powell’s

Author socials: Website|Facebook|Instagram|Bluesky

15:07

[$] Yet another way to configure transparent huge pages [LWN.net]

Transparent huge pages (THPs) are, theoretically, supposed to allow processes to benefit from larger page sizes without changes to their code. This does work, but the performance impacts from THPs are not always a benefit, so system administrators with specific knowledge of their workloads may want the ability to fine-tune THPs to the application. On May 15, Usama Arif shared a patch set that would add a prctl() option for setting THP defaults for a process; that patch set has sparked discussion about whether such a setting is a good fit for prctl(), and what alternative designs may work instead.

14:21

Security updates for Tuesday [LWN.net]

Security updates have been issued by AlmaLinux (delve, emacs, gimp, gimp:2.8, glibc, idm:DL1, ipa, iputils, kernel, krb5, libarchive, libblockdev, libxml2, mod_proxy_cluster, osbuild-composer, pam, perl-File-Find-Rule, perl-YAML-LibYAML, qt5-qtbase, weldr-client, xorg-x11-server and xorg-x11-server-Xwayland, and xorg-x11-server-Xwayland), Debian (mbedtls and sudo), Oracle (.NET 8.0, delve, delve, golang, firefox, ghostscript, glibc, golang, grafana, iputils, kernel, krb5, libarchive, libblockdev, nodejs22, ruby, thunderbird, tomcat, tomcat9, unbound, and wireshark), Red Hat (glibc and mod_auth_openidc), Slackware (sudo), SUSE (gpg2, ImageMagick, iputils, jakarta-commons-fileupload, kernel, libblockdev, libsoup, open-vm-tools, pam, python-tornado6, screen, sudo, and xwayland), and Ubuntu (linux, linux-aws, linux-gcp, linux-gcp-6.11, linux-hwe-6.11, linux-oracle, linux-raspi, linux-realtime, linux-gcp, linux-gcp-6.8, linux-hwe-5.4, linux-oem-6.11, and sudo).

[$] Improved load balancing with machine learning [LWN.net]

The extensible scheduler class ("sched_ext") allows the loading of a custom CPU scheduler into the kernel as a set of BPF functions; it was merged for the 6.12 kernel release. Since then, sched_ext has enabled a wide range of experimentation with scheduling algorithms. At the 2025 Open Source Summit North America, Ching-Chun ("Jim") Huang presented work that has been done to apply (local) machine learning to the problem of scheduling processes on complex systems.

15 Years of OsmAnd [LWN.net]

The OsmAnd map and navigation app project recently celebrated its 15th anniversary.

All these 15 years can be roughly divided into three stages. For the first five years, we built the very basic functionality—offline maps and navigation that just worked. Over the next five years, we transformed OsmAnd into a full-fledged application with plugins, extensive settings, and professional tools. We dedicated the third five-year period to deep internal work: completely rewriting and improving key components like the rendering engine and routing algorithms.

Now, a new, fourth stage begins. We have reached functional maturity, and our main goal for the near future is to polish what we've already built. We will focus on stability, speed, and consolidation. User expectations are growing, and what was once considered normal must now be flawless.

(Thanks to Paul Wise).

13:35

CodeSOD: It's Not Wrong to Say We're Equal [The Daily WTF]

Aaron was debugging some C# code, and while this wasn't the source of the bug, it annoyed him enough to send it to us.

protected override int DoCompare(Item item1, Item item2)
{
        try
        {
                DateTime thisDate = ((DateField)item1.Fields["Create Date"]).DateTime;
                DateTime thatDate = ((DateField)item2.Fields["Create Date"]).DateTime;

                return thatDate.CompareTo(thisDate);
        }
        catch (Exception)
        {
                return 0; // Sorry, ran out of budget!
        }
}

Not to be the pedantic code reviewer, but the name of this function is terrible. Also, DoCompare clearly should be static, but this is just pedantry.

Now, there's a lot of implied WTFs hidden in the Item class. They're tracking fields in a dictionary, or maybe a ResultSet, but I don't think it's a ResultSet because they're converting it to a DateField object, which I believe to be a custom type. I don't know what all is in that class, but the whole thing looks like a mess and I suspect that there are huge WTFs under that.

But we're not here to look at implied WTFs. We're here to talk about that exception handler.

It's one of those "swallow every error" exception handlers, which is always a "good" start, and it's the extra helpful kind, which returns a value that is likely incorrect and provides no indication that anything failed.

Now, I suspect it's impossible for anything to have failed- as stated, this seems to be some custom objects and I don't think anything is actively talking to a database in this function (but I don't know that!) so the exception handler likely never triggers.

But hoo boy, does the comment tell us a lot about the codebase. "Sorry, ran out of budget!". Bugs are inevitable, but this is arguably the worst way to end up with a bug in your code: because you simply ran out of money and decided to leave it broken. And ironically, I suspect the code would be less broken if you just let the exception propagate up- if nothing else, you'd know that something failed, instead of incorrectly thinking two dates were the same.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

13:21

David Bremner: Hibernate on the pocket reform 2/n [Planet Debian]

Context

Testing continued

  • following a suggestion of gordon1, unload the mediatek module first. The following seems to work, either from the console or under sway
echo devices >  /sys/power/pm_test
echo reboot > /sys/power/disk
rmmod mt76x2u
echo disk >  /sys/power/state
modprobe mt76x2u
  • It even works via ssh (on wired ethernet) if you are a bit more patient for it to come back.
  • replacing "reboot" with "shutdown" doesn't seem to affect test mode.
  • replacing "devices" with "platform" (or "processors") leads to unhappiness.
    • under sway, the screen goes blank, and it does not resume
    • same on console

13:07

Link [Scripting News]

The archived source for June 2025.

My new linkblog feed [Scripting News]

This is the address of my linkblog feed: dave.linkblog.org.

I think it's kind of interesting to have the top page of a site be a feed. I don't hide the XML-ness of it. I never supported the obfuscation, it's confusing, makes people not trust RSS, imho.

I think the feed is pretty stable now, so if you want to subscribe, go ahead. I haven't redirected from the old feed yet, probably should do that soon, since it more or less has stopped updating.

This is all managed in WordLand and therefore is part of the WordPress ecosystem.

I felt it was time to do a definitive linkblog, since as far as I could tell no one has tried to explain what it is: basically, a feed where the <link> element of each <item> points to some other site. That's the basic difference.

Also a linkblog feed should specify the channel-level <image> element, which is used as the avatar for the feed when it appears in a twitter-like timeline.

I think the only other product that is open to feeds being part of the open social web is Surf from Mike McCue's company, Flipboard. I asked ChatGPT to brief me on how it works with feeds, and saw that we're more or less doing the same thing, except I'm not trying to work with the output from Twitter, Bluesky, etc. Even when they have outbound RSS feeds they aren't good enough to be part of the social web defined by feeds.

I only want really good feeds. It's time to stop being so careless about what we transmit to the world. If we want an open web we're all going to have to be good gardeners. It's like a food system where all the food is grown by family farmers and I'm running a restaurant, and only want the good stuff, and we want it to look good too! :-)

PS: Another thing, the feed items must have working guids. All software that runs on feeds should be able to depend on this.

PPS: Linkblogs aren't the only kinds of feeds that will be used in this RSS-based feediverse. Scripting News will work with it. You would be able to read this post in this new medium (not yet delivered, btw).

PPPS: More here and here.

12:49

Iranian Blackout Affected Misinformation Campaigns [Schneier on Security]

Dozens of accounts on X that promoted Scottish independence went dark during an internet blackout in Iran.

Well, that’s one way to identify fake accounts and misinformation campaigns.

12:21

Radar Trends to Watch: July 2025 [Radar]

While there are many copyright cases working their way through the court system, we now have an important decision from one of them. Judge William Alsup ruled that the use of copyrighted material for training is “transformative” and, hence, fair use; that converting books from print to digital form was fair use; but that the use of pirated books in building a library for training AI was not.

Now that everyone is trying to build intelligent agents, we have to think seriously about agent security—which is doubly problematic because we already haven’t thought enough about AI security and issues like prompt injection. Simon Willison has coined the term “lethal trifecta” to describe the combination of problems that make agent security particularly difficult: access to private data, exposure to untrusted content, and the ability to communicate with external services.

Artificial Intelligence

  • Researchers have fine-tuned a model for locating deeds that include language to prevent sales to Black people and other minorities. Their research shows that, as of 1950, roughly a quarter of the deeds in Santa Clara county included such language. The research required analyzing millions of deeds, many more than could have been analyzed by humans.
  • Google has released its live music model, Magenta RT. The model is intended to synthesize music in real time. While there are some restrictions, the weights and the code are available on Hugging Face and GitHub.
  • OpenAI has found that models that develop a misaligned persona can be retrained to bring their behavior back inline.
  • The Flash and Pro versions of Gemini 2.5 have reached general availability. Google has also launched a preview of Gemini 2.5 Flash-Lite, which has been designed for low latency and cost.
  • The site lowbackgroundsteel.ai is intended as a repository for pre-AI content—i.e., content that could not have been generated by AI.
  • Are the drawbridges going up? Drew Breunig compares the current state of AI to Web 2.0, when companies like Twitter started to restrict developers connecting to their platforms. Drew points to Anthropic cutting off Windsurf, Slack blocking others from searching or storing messages, and Google cutting ties with Scale after Meta’s investment.
  • Simon Willison has coined the phrase “lethal trifecta” to describe dangerous vulnerabilities in AI agents. The lethal trifecta arises from the combination of private data, untrusted content, and external communication.
  • Two new papers, “Design Patterns for Securing LLM Agents Against Prompt Injections” and “Google’s Approach for Secure AI Agents,” address the problem of prompt injection and other vulnerabilities in agents. Simon Willison’s summaries are excellent. Prompt injection remains an unsolved (and perhaps unsolvable) problem, but these papers show some progress.
  • Google’s NotebookLM can turn your search results into a podcast based on the AI overview. The feature isn’t enabled by default; it’s an experiment in search labs. Be careful—listening to the results may be fun, but it takes you further from the actual results.
  • AI-enabled Barbie™? This I have to see. Or maybe not.
  • Institutional Books is a 242B token dataset for training LLMs. It was created from public domain/out-of-copyright books in Harvard’s library. It includes over 1M books in over 250 languages.
  • Mistral has launched their first reasoning model, Magistral, in two versions: a Small version (open source, 24B) and a closed Medium version for enterprises. The announcement stresses traceable reasoning (for applications like law, finance, and healthcare) and creativity.
  • OpenAI has launched o3-pro, its newest high-end reasoning model. (It’s probably the same model as o3, but with different parameters controlling the time it can spend reasoning.) LatentSpace has a good post on how it’s different. Bring lots of context.
  • At WWDC, Apple announced a public API for its on-device foundation models. Otherwise, Apple’s AI-related announcements at WWDC are unimpressive.
  • Simon Willison’s “The Last Six Months in LLMs” is worth reading; his personal benchmark (asking an LLM to generate a drawing of a pelican riding a bicycle) is surprisingly useful!
  • Here’s a description of tool poisoning attacks (TPA) against systems using MCP. TPAs were first described in a post from Invariant Labs. Malicious commands can be included in the tool metadata that’s sent to the model—usually (but not exclusively) in the description field.
  • As part of the New York Times copyright trial, OpenAI has been ordered to retain ChatGPT logs indefinitely. The order has been appealed.
  • Sandia’s new “brain-inspired” supercomputer, designed by SpiNNcloud, is worth watching. There’s no centralized memory; memory is distributed among processors (175K cores in Sandia’s 24-board system), which are designed to mimic neurons.
  • Google has updated Gemini 2.5 Pro. While we wouldn’t normally get that excited about an update, this update is arguably the best model available for code generation. And an even more impressive model, Gemini Kingfall, was (briefly) seen in the wild.
  • Here’s an MCP connector for humans! The idea is simple: When you’re using LLMs to program, the model will often go off on a tangent if it’s confused about what it needs to do. This connector tells the model how to ask the programmer whenever it’s confused, keeping the human in the loop.
  • Agents appear to be even more vulnerable to security vulnerabilities than the models themselves. Several of the attacks discussed in this paper involve getting an agent to read malicious pages that corrupt the agent’s output.
  • OpenAI has announced the availability of ChatGPT’s Record mode, which records a meeting and then generates a summary and notes. Record mode is currently available for Enterprise, Edu, Team, and Pro users.
  • OpenAI has made its Codex agentic coding tool available to ChatGPT Plus users. The company’s also enabled internet access for Codex. Internet access is off by default for security reasons.
  • Vision language models (VLMs) see what they want to see; they can be very accurate when answering questions about images containing familiar objects but are very likely to make mistakes when shown counterfactual images (for example, a dog with five legs).
  • Yoshua Bengio has announced the formation of LawZero, a nonprofit AI research group that will create “safe-by-design” AI. LawZero is particularly concerned that the latest models are showing signs of “self-preservation and deceptive behavior,” no doubt referring to Anthropic’s alignment research.
  • Chat interfaces have been central to AI since ELIZA. But chat embeds the results you want, in lots of verbiage, and it’s not clear that chat is at all appropriate for agents, when the AI is kicking off lots of new processes. What’s beyond chat?
  • Slop forensics uses LLM “slop” to figure out model ancestry, using techniques from bioinformatics. One result is that DeepSeek’s latest model appears to be using Gemini to generate synthetic data rather than OpenAI. Tools for slop forensics are available on GitHub.
  • Osmosis-Structure-0.6b is a small model that’s specialized for one task: extracting structure from unstructured text documents. It’s available from Ollama and Hugging Face.
  • Mistral has announced an Agents API for its models. The Agents API includes built-in connectors for code execution, web search, image generation, and a number of MCP tools.
  • There is now a database of court cases in which AI-generated hallucinations (citations of nonexistent case law) were used.

Programming

  • Martin Fowler and others describe the “expert generalist” in an attempt to counter increasing specialization in software engineering. Expert generalists combine one (or more) areas of deep knowledge with the ability to add new areas of depth quickly.
  • Duncan Davidson points out that, with AI able to crank out dozens of demos in little time, the “art of saying no” is suddenly critical to software developers. It’s too easy to get lost in a flood of decent options while trying to pick the best one.
  • You’ll probably never need to compute a billion factorials. But even if you don’t, this article nicely demonstrates optimizing a tricky numeric problem.
  • Rust is seeing increased adoption for data engineering projects because of its combination of memory safety and high performance.
  • The best way to make programmers more productive is to make their job more fun by encouraging experimentation and rest breaks and paying attention to issues like appropriate tooling and code quality.
  • What’s the next step after platform engineering? Is it platform democracy? Or Google Cloud’s new idea, internal development platforms?
  • A study by the Enterprise Strategy Group and commissioned by Google claims that software developers waste 65% of their time on problems that are solved by platform engineering.
  • Stack Overflow is taking steps to preserve its relevance in the age of AI. It’s considering incorporating chat, paying people to be helpers, and adding personalized home pages where you can aggregate important technical information.

Web

  • Is it time to implement HTTP/3? This standard, which has been around since 2022, solves some of the problems with HTTP/2. It claims to reduce wait and load times, especially when the network itself is lossy. The Nginx server, along with the major browsers, all support HTTP/3.
  • Monkeon’s WikiRadio is a website that feeds you random clips of Wikipedia audio. Check it out for more projects that remind you of the days when the web was fun.

Security

  • Cloudflare has blocked a DDOS attack that peaked at 7.3 terabits/second; the peak lasted for about 45 seconds. This is the largest attack on record. It’s not the kind of record we like to see.
  • How many people do you guess would fall victim to scammers offering to ghostwrite their novels and get them published? More than you would think.
  • ChainLink Phishing is a new variation on the age-old phish. In ChainLink Phishing, the victim is led through documents on trusted sites, well-known verification techniques like CAPTCHA, and other trustworthy sources before they’re asked to give up private and confidential information.
  • Cloudflare’s Project Galileo offers free protection against cyberattacks for vulnerable organizations, such as human rights and relief organizations that are vulnerable to denial-of-service (DOS) attacks.
  • Apple is adding the ability to transfer passkeys to its operating systems. The ability to import and export passkeys is an important step toward making passkeys more usable.
  • Matthew Green has an excellent post on cryptographic security in Twitter’s (oops, X’s) new messaging system. It’s worth reading for anyone interested in secure messaging. The TL;DR is that it’s better than expected but probably not as good as hoped.
  • Toxic agent flows are a new kind of vulnerability in which an attacker takes advantage of an MCP server to hijack a user’s agent. One of the first instances forced GitHub’s MCP server to reveal data from private repositories.

Operations

  • Databricks announced Lakeflow Designer, a visually oriented drag-and-drop no code tool for building data pipelines. Other announcements include Lakebase, a managed Postgres database. We have always been fans of Postgres; this may be its time to shine.
  • Simple instructions for creating a bootable USB drive for Linux—how soon we forget!
  • An LLM with a simple agent can greatly simplify the analysis and diagnosis of telemetry data. This will be revolutionary for observability—not a threat but an opportunity to do more. “The only thing that really matters is fast, tight feedback loops.”
  • DuckLake combines a traditional data lake with a data catalog stored in an SQL database. Postgres, SQLite, MySQL, DuckDB, and others can be used as the database.

Quantum Computing

  • IBM has committed to building a quantum computer with error correction by 2028. The computer will have 200 logical qubits. This probably isn’t enough to run any useful quantum algorithm, but it still represents a huge step forward.
  • Researchers have claimed that 2,048-bit RSA encryption keys could be broken by a quantum computer with as few as a million qubits—a factor of 20 less than previous estimates. Time to implement postquantum cryptography!

Robotics

  • Denmark is testing a fleet of robotic sailboats (sailboat drones). They’re intended for surveillance in the North Sea.

10:14

Guido Günther: Free Software Activities June 2025 [Planet Debian]

Another short status update of what happened on my side last month. Phosh 0.48.0 is out with nice improvements, phosh.mobi e.V. is alive, helped a bit to get cellbroadcastd out, osk bugfixes and some more:

See below for details on the above and more:

phosh

  • Fix crash triggered by our mpris player refactor (MR)
  • Generate vapi file for libphosh (MR)
  • Backport fixes for 0.47 (MR)
  • Media players lockscreen plugin (MR), bugfix
  • Fix lockscreen clock when am/pm is localized (MR)
  • Another round of CI cleanups (MR)
  • Proper life cycle for MeatinfoCache in app-grid button tests (MR)
  • Enable cell broadcast display by default (MR)
  • Release 0.48~rc1, 0.48.0

phoc

  • Unify output config updates and support adaptive sync (MR)
  • Avoid crash on shutdown (MR)
  • Avoid use after free in gtk-shell (MR)
  • Simplify CI (MR)
  • Release 0.48~rc1, 0.48.0

phosh-mobile-settings

stevia (formerly phosh-osk-stub)

  • Release 0.48~rc1, 0.48.0
  • Reject non-UTF-8 dictionaries for hunspell so avoid broken completion bar (MR)
  • Output tracking (MR) as prep for future work
  • Handle non-UTF-8 dictionaries for hunspell for input and output (MR)
  • Fix some leaks (MR)
  • Handle default completer changes right away (MR)

phosh-osk-data

  • Handle stevia rename (MR)
  • Supply ru presage data

phosh-vala-plugins

  • Add example plugin (MR)

pfs

  • Fix initial empty state (MR)
  • Use GNOME's mirror for fdo templates (MR)

xdg-desktop-portal-phosh

xdg-desktop-portal

  • Fix categories for cell broadcasts (MR)
  • Relax app-id requirement in app-chooser portal (MR)

phosh-debs

  • Switch from osk-stub to stevia (MR)

meta-phosh

  • Make installing from sid and experimental convenient (MR)

feedbackd

feedbackd-device-themes

gmobile

  • Release 0.4.0
  • Make gir and doc build warning free (MR)

GNOME clocks

  • Use libfeedback instead of GTK's media api: (MR). This way the alarm become more recognizable and users can tweak alarm sounds.
  • Fix flatpak build and CI in our branch that carries the needed patches for mobile

Debian

  • meta-phosh: Switch to 0.47 (MR)
  • libmbim: Upload 1.33.1 to experimental
  • libqmi: Upload 1.37.1 to experimental
  • modemmanager: Upload 1.23.1 to experimental
  • Update mobile-broadband-provider-info to 20250613 (MR) in experimental
  • Upload phoc 0.48~rc1, 0.48.0 to experimental
  • Upload gmobile 0.4.0 to experimental
  • Upload phosh-mobile-settings 0.48~rc1, 0.48.0 to experimental
  • Upload xdg-desktop-portal-phosh 0.48~rc1, 0.48.0 to experimental
  • Prepare stevia 0.48~rc1 and upload 0.48.0 to experimental
  • Upload feedbackd 0.8.3 to experimental
  • Upload feedbackd-device-themes 0.8.4 to experimental

Mobian

  • Add feedbackd and wakeup timer support (MR)

ModemManager

  • Release 1.25.1
  • Test and warning fixes (MR)
  • run asan in ci (MR) and fix more leaks

libmbim

libqmi

mobile-broadband-provider-info

Cellbroadcastd

  • Better handle empty operator (MR)
  • Use GApplicaation (MR)
  • Fix library init (MR)
  • Add desktop file (MR)
  • Allow to send notifications for cell broadcast messages (MR)
  • Build introspection data (MR)
  • Only indicate Cell Broadcast support for MM >= 1.25 (MR)
  • Implement duplication detection (MR)
  • Reduce API surface (MR)
  • Add symbols file (MR)
  • Support vala (MR)

iio-sensor-proxy

  • Add minimal gio dependency (MR)

twenty-twenty-hugo

  • Support Mastodon (MR)

gotosocial

  • Explain STARTTLS behavior in docs (MR)

Reviews

This is not code by me but reviews on other peoples code. The list is (as usual) slightly incomplete. Thanks for the contributions!

  • cellbroadcastd: Message store (MR)
  • cellbroadcastd: Print severity (MR)
  • cellbroadcastd: Packaging (MR)
  • cellbroadcastd: Rename from cbd (MR)
  • cellbroadcastd: Release 0.0.1 (MR)
  • cellbroadcastd: Release 0.0.2 (MR)
  • cellbroadcastd: Close file descriptors (MR)
  • cellbroadcastd: Sort messages by timestamp (MR)
  • meta-phosh: Ignore subprojects in format check (MR)
  • p-m-s: pmOS tweaks ground work (MR)
  • p-m-s: osk popover switch (MR)
  • p-m-s: Add panel search (MR)
  • p-m-s: Add cellbroadcastd message history (MR)
  • phosh: Add search daemon and command line tool to query search results (MR)
  • phosh: App-grid: Set max-width entries (MR)
  • chatty: Keyboard navigation improvements (MR)
  • phosh: LTR QuickSettings and fix LTR in screenshot tests (MR)
  • iio-sensor-proxy: improve buffer sensor discovery: (MR)
  • Calls: allow favorites to ring (MR)
  • feedbackd: More haptic udev rules (MR)
  • feedbackd: Simplify udev rules (MR)
  • feedbackd: Support legacy LED naming scheme (MR)
  • gmobile: FLX1 wakeup key support (MR)
  • gmobile: FP6 support (MR)

Help Development

If you want to support my work see donations.

Comments?

Join the Fediverse thread

Versions of reality [Seth's Blog]

A sea slug sees far more colors than you do, and you probably see more than a profoundly color-blind person.

Who’s right?

We each carry our own version of reality, our own story about what happened, what’s around us and how things work.

Our chosen reality serves two useful purposes:

First, it binds us to the others in our circle. If you seek to communicate, speaking Esperanto in Nashville isn’t going to help very much–you do better assuming, as others do, that English is standard. On the other hand, going to a Flat Earth convention and insisting on the truth of our planet’s shape won’t earn you the sort of camaraderie you were hoping for.

[Cults are cults because they demand a shared story that doesn’t align with a useful, generative, positive version of reality, and so they harm the members and eventually hit the wall.]

Second, and more important, it’s a useful way to get what we want. When reality cooperates with our narrative and our goals, we’re more likely to get to where we’re going. Wishful thinking doesn’t lead to successful skydiving, a working parachute does.

[There are lots of benefits, short and long term, for creating a particular story. It might make us feel powerful, or like a victim. It might let us off the hook or it might offer us energy and drama. Some stories amplify status, others are fuel. “How’s that working out for you?” is a great question when exploring a version of reality.]

So, how is your narrative working out? Is your story about the past and the way the world works amplifying your connections and progress? Because reality doesn’t mind showing up when we least want it to. Gravity isn’t just a good idea, it’s the law.

We invent stories, that’s the only way they occur. And most of our stories are about what happened and why.

If your story serves you and those you care about, that’s great. If it persists, it’s probably close to what really happened. But if it’s not working for you, or continues to surprise you when it bumps into the rest of the world, hold it lightly enough to change it.

The best way to get to a more accurate version of reality is to share your assumptions, show your work and change the story based on useful feedback. When we reject narratives that are counter to our story before we even bother to consider them, our story is getting in the way of our path to better.

09:28

Just Dom It by Caede17223 [Oh Joy Sex Toy]

Just Dom It by Caede17223

What does it mean to be a Domme? How do you even start? What if you lack the confidence? Caede17223 takes life by the leash, and directs us to read their semi-autobiographical comic all about it! Don’t restrain yourself, and make sure to let Caede17223 know how great their comic is! Caede17223.carrd.co BlueSky The Pledge […]

06:49

Pluralistic: How much (little) are the AI companies making? (30 Jun 2025) [Pluralistic: Daily links from Cory Doctorow]


Today's links



A carny barker waving his top-hat and selling tickets from a roll; his head has been replaced with the hostile red eye of HAL9000 from Kubrick's '2001: A Space Odyssey.' The background is a magnified, halftoned detail from a US$100 bill.

How much (little) are the AI companies making? (permalink)

If there's one area where tech has shown a consistent aptitude for innovation, it's in accounting tricks that make money-losing companies appear wildly profitable. And AI is the greatest innovator of all (when it comes to accounting gimmicks).

Since the dotcom era, tech companies have boasted about giving stuff away but "making it up in volume," inventing an ever-sweatier collection of shell-games that let them hide the business's true profit and loss.

The all-time world champeen of this kind of finance fraud is Masayoshi Son, the founder of Softbank, who acts as the bagman for the Saudi royals' personal investments. Remember last decade when the tech press was all abuzz about "unicorns" – startups that were worth $1b? That was Son: he would take a startup like Wework, declare its brand to be worth $1b, invest an infinitesimal fraction of $1b in the company based on that valuation (sometimes with a rube co-investor) and declare the valuation to be "market-based." A whole string of garbage companies achieved unicornhood by means of this unbelievably stupid trick:

https://pluralistic.net/2022/05/27/voluntary-carbon-market/#trust-me

Of course, every finance bro is familiar with Stein's Law: "anything that can't go on forever eventually stops." Sure, the Saudi royals could be tapped to piss away $31b on Uber, losing $0.41 on every dollar for 13 years, but eventually they're going to turn off the money spigot and attempt to flog their shares to retail and institutional suckers. To make that work, they have to invent new accounting tricks, like when Uber "sold" its failing overseas ride-hailing businesses to international rivals in exchange for stock, then declared that these companies' illiquid stock had skyrocketed in value, tipping Uber into the black:

https://pluralistic.net/2022/08/05/a-lousy-taxi/#a-giant-asterisk

Even companies that are actually profitable (in the sense of bringing in more revenue than it costs to keep the business's lights on) love to juice their stats, and the worst offenders are the Big Tech companies, who reap a vast commercial reward from creating the illusion that they are continuing to grow, even after they've dominated their sector.

Take Google: once the company attained a 90% global search market-share, there were no more immediate prospects for growth. I mean, sure, they could raise a billion new humans to maturity and train them to be Google customers (e.g., the business plan for Google Classroom), but that takes more than a decade, and Google needed growth right away. So the company hatched a plan to make search worse, so that its existing users would have to search multiple times to get the information they sought, and each additional search would give Google another chance to show you an ad:

https://pluralistic.net/2024/04/24/naming-names/#prabhakar-raghavan

But that was small potatoes. What Google – and the rest of the tech sector – needed was a massive growth story, a story about how their companies, worth trillions of dollars, could double or triple in size in the coming years. There's a kind of reflexive anti-capitalist critique that locates the drive to tell growth stories in ideology: "endless growth is the ideology of a tumor," right?

But spinning an endless growth story isn't merely ideological. It's a firmly materialistic undertaking. Companies that appear to be growing have market caps that are an order of magnitude larger than companies that are considered "mature" and at the end of their growth phase. For every dollar that Ford brings in, the market is willing to spend $8.60 on its stock. For every dollar Tesla brings in, the market is willing to spend $118 on its stock.

That means that when Tesla and Ford compete to buy something – like another company, or the labor of highly sought after technical specialists – Tesla has a nearly unbeatable advantage. Rather than raiding its precious cash reserves to fund its offer, Tesla can offer stock. Ford can only spend as many dollars as it brings in through sales, but Tesla can make more stock, on demand, simply by typing numbers into a spreadsheet.

So when Tesla bids against Ford, Ford has to use dollars, and Tesla can use shares. And even if the acquisition target – a key employee or a startup that's on the acquisitions market – wants dollars instead of shares, Tesla can stake its shares as collateral for loans at a rate that's 1,463% better than the rate Ford gets when it collateralizes a loan based on its own equity:

https://pluralistic.net/2025/05/07/rah-rah-rasputin/#credulous-dolts

In other words, if you can tell a convincing growth story, it's much easier to grow. The corollary, though, is that when a growth company stops growing, when it becomes "mature," it experiences a massive sell-off of its stock, as its share price plummets to a tenth or less of the old "growth" valuation. That's why the biggest tech companies in the world have spent the past decade – the decade after they monopolized their sectors and conquered the world – pumping a series of progressively stupider bubbles: metaverse, cryptocurrency, and now, AI.

Tech companies don't need these ventures to be successful – they just need them to seem to be plausibly successful for long enough to keep the share price high until the next growth story heaves over the horizon. So long as Mister Market thinks tech is a "growth" sector and not a "mature" sector, tech bosses will be able to continue to pay for things with stock rather than cash, and their own stockholdings will continue to be valued at sky-high rates.

That's why AI is being crammed into absofuckinglutely everything. It's why the button you used to tap to start a new chat summons up an AI that takes seven taps to banish again – it's so tech companies can tell Wall Street that people are "using AI" which means that their companies are still part of a growth industry and thus entitled to gigantic price-to-earnings ratios:

https://pluralistic.net/2025/05/02/kpis-off/#principal-agentic-ai-problem

The reality, of course, is that people hate AI. Telling people that your product is "AI enabled" makes them less likely to use it:

https://www.tandfonline.com/doi/full/10.1080/19368623.2024.2368040#d1e1096

People – who have had an infinitude of AI crammed down their throats – are already sick of AI. Policymakers and financiers – credulous dolts who fall for tech marketing hype every! fucking! time – are convinced that AI Is The Future. This presents a dilemma for tech companies, who research the hell out of how people actually use their products and thus must be extremely aware of how hated AI is, but whose leadership is desperate to show investors that they are about to experience explosive growth through the miracle of AI.

The reality is that AI is a very bad business. It has dogshit unit economics. Unlike all the successful tech of the 21st century, each generation of AI is more expensive to make, not cheaper. And unlike the most profitable tech services of this century, AI gets more costly to operate the more users it has.

You can be forgiven for not knowing this, though. As Ed Zitron points out in a long, excellent article about the credulity and impuissance of the tech press, the actual numbers suuuuuck:

https://www.wheresyoured.at/make-fun-of-them/

  • Microsoft

Spending: $80b in 2025

Projecting: $13b in 2025

Actually: $10b comes from Openai giving back compute credits Microsoft gave to Openai, bringing the true total to $3b.

  • Meta

Spending: $72b in 2025

Receiving: At most $600m in gross revenue from selling "smart" Raybans, which might not actually be loss-leaders, meaning it's possible that they're making less than $0.00.

  • Amazon

Spending: $100b in 2025

Projecting: $5b in revenue in 2025

  • Google

Spending: $75b in 2025

Projecting: They won't say, possibly zero.

As Zitron points out: this industry is projecting $327b in spending this year, with $18b in revenue and zero profits. For comparison: smart watches are a $32b/year industry.

Now, what about Openai? Well, they're one of Masoyoshi Son's special children, of a piece with Wework and Uber. Openai is projecting $12.7b in revenue this year, with losses of $14b. Add in a bunch of also-rans like Perplexity and Surge, and the revenue rises to $32.3b. But…if you chuck them in, you also get total expenditures of $370.8b.

These are by no means the only funny numbers in the AI industry. Take "Stargate," a data-center initiative with a price tag of $500b. Actual funds committed? $40b.

These are terrible numbers, but also, these are some genuinely impressive accounting gimmicks. They are certain to keep the bubble pumping for months or perhaps years, convincing gullible bosses to fire talented employees and replace them with bumbling chatbots that will linger for years or decades, the asbestos in the walls of our high-tech civilization.

(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 Wil Wheaton’s Slashdot interview https://slashdot.org/story/05/06/27/0926218/wil-wheaton-strikes-back

#20yrsago Anti-DRM badges https://web.archive.org/web/20050701004506/http://nootropic.blogspot.com/2005/06/gallery-of-drm-related-antipixel.html

#15yrsago ACLU: America is riddled with politically motivated surveillance https://www.aclu.org/files/assets/Spyfiles_2_0.pdf

#15yrsago Toronto cops justify extreme G20 measures with display of LARPing props, weapons from unrelated busts https://web.archive.org/web/20100702002151/https://www.theglobeandmail.com/news/national/toronto/weapons-seized-in-g20-arrests-put-on-display/article1622761/

#15yrsago Copyright best practices for communications scholars https://web.archive.org/web/20100628005458/http://centerforsocialmedia.org/fair-use/related-materials/codes/code-best-practices-fair-use-scholarly-research-communication

#15yrsago G20 police used imaginary law to jail harass demonstrators and jailed protestors in dangerous and abusive “detention center” https://memex.craphound.com/2010/06/29/g20-police-used-imaginary-law-to-jail-harass-demonstrators-and-jailed-protestors-in-dangerous-and-abusive-detention-center/

#15yrsago Canada repeating Britain’s dirty copyright legislation process https://www.theguardian.com/technology/2010/jun/29/canada-copyright-digital-economy

#15yrsago London cops enforce imaginary law against brave, principled teenaged photographer https://www.independent.co.uk/news/uk/crime/officers-claim-they-don-t-need-law-to-stop-photographer-taking-pictures-2012827.html

#15yrsago Globe and Mail journalist arrested and kettled at G20 Toronto https://web.archive.org/web/20100630110103/https://www.theglobeandmail.com/news/world/g8-g20/toronto/caught-in-the-storm-penned-in-at-queen-street/article1621255/

#15yrsago UK government hushed up internal analysis of anti-drug strategy to avoid ridicule https://transform-drugs.blogspot.com/2010/06/home-office-internal-document-reveals.html

#15yrsago My Twitter debate with Minister who introduced Canada’s DMCA https://memex.craphound.com/2010/06/28/my-twitter-debate-with-minister-who-introduced-canadas-dmca/

#10yrsago Why I’m leaving London https://memex.craphound.com/2015/06/29/why-im-leaving-london/

#10yrsago Neal Stephenson on the story behind Seveneves http://www.bookotron.com/agony/audio/2015/2015-interviews/neal_stephenson-2015.mp3

#10yrsago Brian Wood’s Starve: get to your comic shop now! https://memex.craphound.com/2015/06/29/brian-woods-starve-get-to-your-comic-shop-now/

#10yrsago BBC’s list of pages de-indexed through Europe’s “right to be forgotten” https://www.bbc.co.uk/webarchive/https%3A%2F%2Fwww.bbc.co.uk%2Fblogs%2Finternet%2Fentries%2F1d765aa8-600b-4f32-b110-d02fbf7fd379

#5yrsago NYC housing lottery favors the least-needy https://pluralistic.net/2020/06/29/female-furies/#market-failure

#5yrsago Facebook and Trump collaborate on rule-rigging https://pluralistic.net/2020/06/29/female-furies/#fb-hearts-dt

#5yrsago How to break up Google https://pluralistic.net/2020/06/29/female-furies/#braygoog

#5yrsago Female Furies https://pluralistic.net/2020/06/29/female-furies/#apokolips-now

#5yrsago Bailouts should come with strings attached https://pluralistic.net/2020/06/28/kings-shilling/#tanstaafl

#1yrago The reason you can't buy a car is the same reason that your health insurer let hackers dox you https://pluralistic.net/2024/06/28/dealer-management-software/#antonin-scalia-stole-your-car


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)

  • Enshittification: Why Everything Suddenly Got Worse and What to Do About It, Farrar, Straus, Giroux, October 7 2025
    https://us.macmillan.com/books/9780374619329/enshittification/
  • Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026

  • Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026

  • The Memex Method, Farrar, Straus, Giroux, 2026



Colophon (permalink)

Today's top sources:

Currently writing:

  • 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
Separator: ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂ ⠂⠄⠄⠂⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂ ⠂⠄⠄⠂⠂⠄⠄⠂⠁⠁⠂⠄ Top Sources: None -->

Today's links



A carny barker waving his top-hat and selling tickets from a roll; his head has been replaced with the hostile red eye of HAL9000 from Kubrick's '2001: A Space Odyssey.' The background is a magnified, halftoned detail from a US$100 bill.

How much (little) are the AI companies making? (permalink)

If there's one are where tech has shown a consistent aptitude for innovation, it's in accounting tricks that make money-losing companies appear wildly profitable. And AI is the greatest innovator of all (when it comes to accounting gimmicks).

Since the dotcom era, tech companies have boasted about giving stuff away but "making it up in volume," inventing an ever-sweatier collection of shell-games that let them hide the business's true profit and loss.

The all-time world champeen of this kind of finance fraud is Masayoshi Son, the founder of Softbank, who acts as the bagman for the Saudi royals' personal investments. Remember last decade when the tech press was all abuzz about "unicorns" – startups that were worth $1b? That was Son: he would take a startup like Wework, declare its brand to be worth $1b, invest an infinitesimal fraction of $1b in the company based on that valuation (sometimes with a rube co-investor) and declare the valuation to be "market-based." A whole string of garbage companies achieved unicornhood by means of this unbelievably stupid trick:

https://pluralistic.net/2022/05/27/voluntary-carbon-market/#trust-me

Of course, every finance bro is familiar with Stein's Law: "anything that can't go on forever eventually stops." Sure, the Saudi royals could be tapped to piss away $31b on Uber, losing $0.41 on every dollar for 13 years, but eventually they're going to turn off the money spigot and attempt to flog their shares to retail and institutional suckers. To make that work, they have to invent new accounting tricks, like when Uber "sold" its failing overseas ride-hailing businesses to international rivals in exchange for stock, then declared that these companies' illiquid stock had skyrocketed in value, tipping Uber into the black:

https://pluralistic.net/2022/08/05/a-lousy-taxi/#a-giant-asterisk

Even companies that are actually profitable (in the sense of bringing in more revenue than it costs to keep the business's lights on) love to juice their stats, and the worst offenders are the Big Tech companies, who reap a vast commercial reward from creating the illusion that they are continuing to grow, even after they've dominated their sector.

Take Google: once the company attained a 90% global search market-share, there were no more immediate prospects for growth. I mean, sure, they could raise a billion new humans to maturity and train them to be Google customers (e.g., the business plan for Google Classroom), but that takes more than a decade, and Google needed growth right away. So the company hatched a plan to make search worse, so that its existing users would have to search multiple times to get the information they sought, and each additional search would give Google another chance to show you an ad:

https://pluralistic.net/2024/04/24/naming-names/#prabhakar-raghavan

But that was small potatoes. What Google – and the rest of the tech sector – needed was a massive growth story, a story about how their companies, worth trillions of dollars, could double or triple in size in the coming years. There's a kind of reflexive anti-capitalist critique that locates the drive to tell growth stories in ideology: "endless growth is the ideology of a tumor," right?

But spinning an endless growth story isn't merely ideological. It's a firmly materialistic undertaking. Companies that appear to be growing have market caps that are an order of magnitude larger than companies that are consisdered "mature" and at the end of their growth phase. For every dollar that Ford brings in, the market is willing to spend $8.60 on its stock. For every dollar Tesla brings in, the market is willing to spend $118 on its stock.

That means that when Tesla and Ford compete to buy something – like another company, or the labor of highly sought after technical specialists – Tesla has a nearly unbeatable advantage. Rather than raiding its precious cash reserves to fund its offer, Tesla can offer stock. Tesla can only spend as many dollars as it brings in through sales, but Tesla can make more stock, on demand, simply by typing numbers into a spreadsheet.

So when Tesla bids against Ford, Ford has to use dollars, and Tesla can use shares. And even if the acquisition target – a key employee or a startup that's on the acquisitions market – wants dollars instead of shares, Tesla can stake its shares as collateral for loans at a rate that's 1,463% better than the rate Ford gets when it collateralizes a loan based on its own equity:

https://pluralistic.net/2025/05/07/rah-rah-rasputin/#credulous-dolts

In other words, if you can tell a convincing growth story, it's much easier to grow. The corollary, though, is that when a growth company stops growing, when it becomes "mature," it experiences a massive sell-off of its stock, as its share price plummets to a tenth or less of the old "growth" valuation. That's why the biggest tech companies in the world have spent the past decade – the decade after they monopolized their sectors and conquered the world – pumping a series of progressively stupider bubbles: metaverse, cryptocurrency, and now, AI.

Tech companies don't need these ventures to be successful – they just need them to seem to be plausibly successful for long enough to keep the share price high until the next growth story heaves over the horizon. So long as Mister Market thinks tech is a "growth" sector and not a "mature" sector, tech bosses will be able to continue to pay for things with stock rather than cash, and their own stockholdings will continue to be valued at sky-high rates.

That's why AI is being crammed into absofuckingloutely everything. it's why the button you used to tap to start a new chat summons up an AI that takes seven taps to banish again – it's so tech companies can tell Wall Street that people are "using AI" which means that their companies are still part of a growth industry and thus entitled to gigantic price-to-earnings ratios:

https://pluralistic.net/2025/05/02/kpis-off/#principal-agentic-ai-problem

The reality, of course, is that people hate AI. Telling people that your product is "AI enabled" makes less likely to use it:

https://www.tandfonline.com/doi/full/10.1080/19368623.2024.2368040#d1e1096

People – who have had an infinitude of AI crammed into down their throats – are already sick of AI. Policymakers and financiers – credulous dolts who fall for tech marketing hype every! fucking! time – are convinced that AI Is The Future. This presents a dilemma for tech companies, who research the hell out of how people actually use their products and thus must be extremely aware of how hated AI is, but whose leadership is desperate to show investors that they are about to experience explosive growth through the miracle of AI.

The reality is that AI is a very bad business. It has dogshit unit economics. Unlike all the successful tech of the 21st century, each generation of AI is more expensive to make, not cheaper. And unlike the most profitable tech services of this century, AI gets more costly to operate the more users it has.

You can be forgiven for not knowing this, though. As Ed Zitron points out in a long, excellent article about the credulity and impuissance of the tech press, the actual numbers suuuuuck:

https://www.wheresyoured.at/make-fun-of-them/

  • Microsoft

Spending: $80b in 2025

Projecting: $13b in 2025

Actually: $10b comes from Openai giving back compute credits Microsoft gave to Openai, bringing the true total to $3b.

  • Meta

Spending: $72b in 2025

Receiving: At most $600m in gross revenue from selling "smart" Raybans, which might not actually be loss-leaders, meaning it's possible that they're making less than $0.00.

  • Amazon

Spending: $100b in 2025

Projecting: $5b in revenue in 2025

  • Google

Spending: $75b in 2025

Projecting: They won't say, possibly zero.

As Zitron points out: this industry is projecting $327b in spending this year, with $18b in revenue and zero profits. For comparison: smart watches are a $32b/year industry.

Now, what about Openai? Well, they're one of Masoyoshi Son's special children, of a piece with Wework and Uber. Openai is projecting $12.7b in revenue this year, with losses of $14b. Add in a bunch of also-rans like Perplexity and Surge, and the revenue rises to $32.3b. But…if you chuck them in, you also get total exenditure of $370.8b.

These are by no means the only funny numbers in the AI industry. Take "Stargate," a data-center initiative with a price tag of $500b. Actual funds committed? $40b.

These are terrible numbers, but also, these are some genuinely impressive accounting gimmicks. They are certain to keep the bubble pumping for months or perhaps years, convincing gullible bosses to fire talented employees and replace them with bumbling chatbots that will linger for years or decades, the asbestos in the walls of our high-tech civilization.

(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 Wil Wheaton’s Slashdot interview https://slashdot.org/story/05/06/27/0926218/wil-wheaton-strikes-back

#20yrsago Anti-DRM badges https://web.archive.org/web/20050701004506/http://nootropic.blogspot.com/2005/06/gallery-of-drm-related-antipixel.html

#15yrsago ACLU: America is riddled with politically motivated surveillance https://www.aclu.org/files/assets/Spyfiles_2_0.pdf

#15yrsago Toronto cops justify extreme G20 measures with display of LARPing props, weapons from unrelated busts https://web.archive.org/web/20100702002151/https://www.theglobeandmail.com/news/national/toronto/weapons-seized-in-g20-arrests-put-on-display/article1622761/

#15yrsago Copyright best practices for communications scholars https://web.archive.org/web/20100628005458/http://centerforsocialmedia.org/fair-use/related-materials/codes/code-best-practices-fair-use-scholarly-research-communication

#15yrsago G20 police used imaginary law to jail harass demonstrators and jailed protestors in dangerous and abusive “detention center” https://memex.craphound.com/2010/06/29/g20-police-used-imaginary-law-to-jail-harass-demonstrators-and-jailed-protestors-in-dangerous-and-abusive-detention-center/

#15yrsago Canada repeating Britain’s dirty copyright legislation process https://www.theguardian.com/technology/2010/jun/29/canada-copyright-digital-economy

#15yrsago London cops enforce imaginary law against brave, principled teenaged photographer https://www.independent.co.uk/news/uk/crime/officers-claim-they-don-t-need-law-to-stop-photographer-taking-pictures-2012827.html

#15yrsago Globe and Mail journalist arrested and kettled at G20 Toronto https://web.archive.org/web/20100630110103/https://www.theglobeandmail.com/news/world/g8-g20/toronto/caught-in-the-storm-penned-in-at-queen-street/article1621255/

#15yrsago UK government hushed up internal analysis of anti-drug strategy to avoid ridicule https://transform-drugs.blogspot.com/2010/06/home-office-internal-document-reveals.html

#15yrsago My Twitter debate with Minister who introduced Canada’s DMCA https://memex.craphound.com/2010/06/28/my-twitter-debate-with-minister-who-introduced-canadas-dmca/

#10yrsago Why I’m leaving London https://memex.craphound.com/2015/06/29/why-im-leaving-london/

#10yrsago Neal Stephenson on the story behind Seveneves http://www.bookotron.com/agony/audio/2015/2015-interviews/neal_stephenson-2015.mp3

#10yrsago Brian Wood’s Starve: get to your comic shop now! https://memex.craphound.com/2015/06/29/brian-woods-starve-get-to-your-comic-shop-now/

#10yrsago BBC’s list of pages de-indexed through Europe’s “right to be forgotten” https://www.bbc.co.uk/webarchive/https%3A%2F%2Fwww.bbc.co.uk%2Fblogs%2Finternet%2Fentries%2F1d765aa8-600b-4f32-b110-d02fbf7fd379

#5yrsago NYC housing lottery favors the least-needy https://pluralistic.net/2020/06/29/female-furies/#market-failure

#5yrsago Facebook and Trump collaborate on rule-rigging https://pluralistic.net/2020/06/29/female-furies/#fb-hearts-dt

#5yrsago How to break up Google https://pluralistic.net/2020/06/29/female-furies/#braygoog

#5yrsago Female Furies https://pluralistic.net/2020/06/29/female-furies/#apokolips-now

#5yrsago Bailouts should come with strings attached https://pluralistic.net/2020/06/28/kings-shilling/#tanstaafl

#1yrago The reason you can't buy a car is the same reason that your health insurer let hackers dox you https://pluralistic.net/2024/06/28/dealer-management-software/#antonin-scalia-stole-your-car


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)

  • Enshittification: Why Everything Suddenly Got Worse and What to Do About It, Farrar, Straus, Giroux, October 7 2025
    https://us.macmillan.com/books/9780374619329/enshittification/
  • Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026

  • Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026

  • The Memex Method, Farrar, Straus, Giroux, 2026



Colophon (permalink)

Today's top sources:

Currently writing:

  • 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

06:28

UK minister for repression determined to label organization Palestine Action as "terrorist" [Richard Stallman's Political Notes]

The UK minister for repression is absolutely determined to label the organization Palestine Action as "terrorist" and ban it on account of a protest where its members sprayed red paint on warplanes in a military base.

If protesters can get access to them to spray paint, someone with violent and hostile aims could get access too. The Royal Air Force should be grateful that its weak security was discovered and reported in this way, and the British government should cease its repression of people protesting against support for Israel's war crimes.

The group's lawyers claim that the proposed ban would be illegal. I wonder whether a court would have a chance to judge whether the ban of the organization is lawful. Or would punishment of its members be automatic, with no consideration of whether the group deserves the name of "terrorist"?

Deaths from tobacco exposure in 2023 [Richard Stallman's Political Notes]

*Tobacco exposure killed more than 7m people in 2023, study finds.

Researchers say tobacco linked to about one in eight deaths worldwide and numbers rising sharply in some countries.*

Swedish journalist arrested and tried in Turkey [Richard Stallman's Political Notes]

Swedish journalist Joakim Medin visited Turkey and was arrested, accused (and later convicted) of insulting President Erdoğan at a protest in Sweden. He was also accused of terrorism, but it seems those charges were dropped, because he was allowed to leave Turkey.

If anyone can tell me what concrete act constituted the alleged terrorism, I would be grateful, especially if that comes with a URL that I can link to about that.

Global heating making Britain hotter and dryer [Richard Stallman's Political Notes]

Global heating is making Britain hotter and dryer.

Global heating will cause many problems around the world. Either each part of the world can adapt to too little water or too much water, and too much or too little of many other things that global heating will cause, and then do some more of each in a decade or two, or the world can get serious about curbing global heating.

Europe's pledge to spend on military will hurt climate and social programs [Richard Stallman's Political Notes]

*Europe’s pledge to spend more on military will hurt climate and social programmes.* This reflects a policy that prioritizes keeping taxes low for the rich.

American student loan borrowers at risk of defaulting [Richard Stallman's Political Notes]

6 million American student loan borrowers are at risk of defaulting in the coming weeks.

This is the persecutor's doing. Biden had allowed the borrowers to stop making payments, while searching unsuccessfully for a way to forgive the loans despite the obstruction by Republicans in Congress.

The US should do what Britain has done, and make repayments conditional on receiving a middle-class salary. Then the loan would not ruin the whole rest of your life if you don't get such a salary.

History of how Israel developed nuclear weapons [Richard Stallman's Political Notes]

For comparison with Iran, the history of how Israel developed nuclear weapons.

In the 1950s, 60s and 70s several of Israel's neighbors insisted that they sought to destroy Israel. There are countries that are hostile to Iran, too, but only Israel might seek to destroy it.

Two Union leaders quit Democratic National Committee [Richard Stallman's Political Notes]

Two Union leaders have quit the Democratic National Committee, criticizing the party for becoming too plutocratist.

I quit supporting the Democratic Party for that reason in the 1990s. Bill Clinton was too plutocratist for me to stomach.

Migrants jailed in Costa Rica [Richard Stallman's Political Notes]

Costa Rica allowed the US to deport there 200 migrants from various Asian and African countries. Costa Rica kept them in jail for a few months, but a court has ordered them freed.

Now will come their real problem: how to live in Costa Rica without knowing any Spanish and not be an outcast. Some of them will be able to learn a new language well, depending on their age and health, but some will not.

Feeds

FeedRSSLast fetchedNext fetched after
@ASmartBear XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
a bag of four grapes XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Ansible XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
Bad Science XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Black Doggerel XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Blog - Official site of Stephen Fry XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Charlie Brooker | The Guardian XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Charlie's Diary XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Chasing the Sunset - Comics Only XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Coding Horror XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
Cory Doctorow's craphound.com XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Cory Doctorow, Author at Boing Boing XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Ctrl+Alt+Del Comic XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Cyberunions XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
David Mitchell | The Guardian XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Deeplinks XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
Diesel Sweeties webcomic by rstevens XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Dilbert XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Dork Tower XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Economics from the Top Down XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Edmund Finney's Quest to Find the Meaning of Life XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
EFF Action Center XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Enspiral Tales - Medium XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Events XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Falkvinge on Liberty XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Flipside XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Flipside XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Free software jobs XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
Full Frontal Nerdity by Aaron Williams XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
General Protection Fault: Comic Updates XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
George Monbiot XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Girl Genius XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Groklaw XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Grrl Power XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Hackney Anarchist Group XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Hackney Solidarity Network XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
http://blog.llvm.org/feeds/posts/default XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
http://eng.anarchoblogs.org/feed/atom/ XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
http://feed43.com/3874015735218037.xml XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
http://flatearthnews.net/flatearthnews.net/blogfeed XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
http://fulltextrssfeed.com/ XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
http://london.indymedia.org/articles.rss XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&amp;_render=rss XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
http://planet.gridpp.ac.uk/atom.xml XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
http://shirky.com/weblog/feed/atom/ XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
http://thecommune.co.uk/feed/ XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
http://theness.com/roguesgallery/feed/ XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
http://www.airshipentertainment.com/buck/buckcomic/buck.rss XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
http://www.airshipentertainment.com/growf/growfcomic/growf.rss XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
http://www.airshipentertainment.com/myth/mythcomic/myth.rss XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
http://www.baen.com/baenebooks XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
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 22:21, Saturday, 05 July 23:05, Saturday, 05 July
http://www.godhatesastronauts.com/feed/ XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
http://www.tinycat.co.uk/feed/ XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
https://anarchism.pageabode.com/blogs/anarcho/feed/ XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
https://broodhollow.krisstraub.comfeed/ XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
https://debian-administration.org/atom.xml XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
https://feeds.feedburner.com/Starslip XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
https://feeds2.feedburner.com/GeekEtiquette?format=xml XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
https://hackbloc.org/rss.xml XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
https://kajafoglio.livejournal.com/data/atom/ XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
https://philfoglio.livejournal.com/data/atom/ XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
https://pixietrixcomix.com/eerie-cutiescomic.rss XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
https://pixietrixcomix.com/menage-a-3/comic.rss XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
https://propertyistheft.wordpress.com/feed/ XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
https://requiem.seraph-inn.com/updates.rss XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
https://studiofoglio.livejournal.com/data/atom/ XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
https://thecommandline.net/feed/ XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
https://torrentfreak.com/subscriptions/ XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
https://twitter.com/statuses/user_timeline/22724360.rss XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
https://web.randi.org/?format=feed&type=rss XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
https://www.dcscience.net/feed/medium.co XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
https://www.DropCatch.com/domain/steampunkmagazine.com XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
https://www.DropCatch.com/domain/ubuntuweblogs.org XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
https://www.DropCatch.com/redirect/?domain=DyingAlone.net XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
https://www.freedompress.org.uk:443/news/feed/ XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
https://www.goblinscomic.com/category/comics/feed/ XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
https://www.loomio.com/blog/feed/ XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
https://www.newstatesman.com/feeds/blogs/laurie-penny.rss XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
https://www.patreon.com/graveyardgreg/posts/comic.rss XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
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 22:21, Saturday, 05 July 23:04, Saturday, 05 July
https://www.travelthelakes.com/ XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
Humble Bundle Blog XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
I, Cringely XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Irregular Webcomic! XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Joel on Software XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
Judith Proctor's Journal XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
Krebs on Security XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Lambda the Ultimate - Programming Languages Weblog XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
Looking For Group XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
LWN.net XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Mimi and Eunice XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Neil Gaiman's Journal XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
Nina Paley XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
O Abnormal – Scifi/Fantasy Artist XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Oglaf! -- Comics. Often dirty. XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Oh Joy Sex Toy XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
Order of the Stick XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
Original Fiction Archives - Reactor XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
OSnews XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Paul Graham: Unofficial RSS Feed XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Penny Arcade XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Penny Red XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
PHD Comics XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Phil's blog XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
Planet Debian XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Planet GNU XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Planet Lisp XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Pluralistic: Daily links from Cory Doctorow XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
PS238 by Aaron Williams XML 22:28, Saturday, 05 July 23:16, Saturday, 05 July
QC RSS XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
Radar XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
RevK®'s ramblings XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
Richard Stallman's Political Notes XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Scenes From A Multiverse XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
Schneier on Security XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
SCHNEWS.ORG.UK XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
Scripting News XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Seth's Blog XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
Skin Horse XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Spinnerette XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
Tales From the Riverbank XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
The Adventures of Dr. McNinja XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
The Bumpycat sat on the mat XML 22:35, Saturday, 05 July 23:15, Saturday, 05 July
The Daily WTF XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
The Monochrome Mob XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
The Non-Adventures of Wonderella XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
The Old New Thing XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
The Open Source Grid Engine Blog XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
The Stranger XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
towerhamletsalarm XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
Twokinds XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
UK Indymedia Features XML 22:21, Saturday, 05 July 23:03, Saturday, 05 July
Uploads from ne11y XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
Uploads from piasladic XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July
Use Sword on Monster XML 22:28, Saturday, 05 July 23:15, Saturday, 05 July
Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily XML 22:35, Saturday, 05 July 23:21, Saturday, 05 July
what if? XML 22:35, Saturday, 05 July 23:16, Saturday, 05 July
Whatever XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
Whitechapel Anarchist Group XML 22:21, Saturday, 05 July 23:10, Saturday, 05 July
WIL WHEATON dot NET XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
wish XML 22:21, Saturday, 05 July 23:06, Saturday, 05 July
Writing the Bright Fantastic XML 22:21, Saturday, 05 July 23:05, Saturday, 05 July
xkcd.com XML 22:21, Saturday, 05 July 23:04, Saturday, 05 July