MoreRSS

site iconTim BrayModify

ongoing is short for “ongoing fragmented essay. The unifying themes are Truth, Technology, and Business.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Tim Bray

I Wasted an Hour on X

2026-10-14 03:00:00

Recently John Gruber, whom I’ve followed for decades, published X Once Again Marks the Spot. It’s short and I’m not going to try to summarize it so go read it if you haven’t already. But here are two key quotes: “I see more interesting posts on X than I do on Threads, Bluesky, and Mastodon combined. I wish that weren’t so but it is.” and “The culture on X today is remarkably friendly and inclusive. It is a cheerful place.” Reaction on Bluesky and the Fediverse has been pretty fierce.

I think the following things can all be true.

It’s less toxic than it used to be

Well yeah, Elon isn’t in everyone’s feed, clearly a major quality-of-life improvement.

It’s still his shop, and he’s a slimy fascist

Go read X is bad, though by Lex Freidman. I mean, Musk delivers sieg-heil Nazi salutes in public and boasted about how he, the world’s richest man, cut off food rations to the world’s poorest children. Lex has a longer list of reasons but those two are all I need.

Then there’s the unforgiveable doctrine of tuning the algorithm to bury posts that have links in them.

The CEOs are there

This was Gruber’s starting point. But, uh… CEOs are boring. They have to be ruthlessly on-message and never stray a millimeter from their core mission, which is promoting their company to the investment class. If I want to learn about Apple I’ll go read actual humans like Gruber or Friedman and ignore the vacuous arm-waving from the executives.

It’s not just CEOs, I saw Macron and Burnham and Zelenskyy and Modi. In fact, today’s reality on X is that the people posting are mostly public figures, already established as writers or politicians or executives or whatever. Most of them are there with a business or party or product to promote and that’s what they do.

There are very few who are just interesting voices you haven’t heard before; and that’s part of what I go online looking for.

It’s not “cheerful” for everyone

I dunno, I just spent an hour there and I find myself totally gloomed out. Putinist propaganda. Zionist settler hasbara. Rod Dreher ranting incomprehensibly, and I quote: “…young Jews became Bolsheviks in part to "murder" their fathers - that is, to destroy Judaism.” LLM cheerleading, that get-on-board-or-you’re-history flavor we all remember from the heydey of crypto. Joni Mitchell gleeful at her US-Citizenship ceremony. Slanted political propaganda, against the incumbents in the current BC election, until I switched to Explore and it switched to pro-incumbent puffery.

This is fun?

Anyhow, here’s a list

People, I mean, who are there but should really know better and of whom I now think less: Joni. Nicholas Kristoff. Josh Marshall. Jeet Heer. Nate Silver. Aaron Rupar. Corey Quinn. Stephen King. The Tsleil-Waututh Nation. Miguel de Icaza. Fortunately none of them care what I think of them. I could go on but I’m already blue enough. And I’m not going to even start listing the many featured voices belonging to people whom I already thought of as unsalvageable scumfucks.

The future

Twitter is part of the SpaceX LLMs+rockets conglomerate. If you believe, as I do, that the bubble is going to pop soon and loudly, it’s going to be desperate times when SpaceX’s valuation collapses and it can’t borrow billions to keep the doors open. Twitter has never made really significant profits (and I saw exactly zero ads in the hour I spent poking around).

So what happens then? Feels to me like the choices are extinction or enshittification. We’ll see.

Where I stand

I’m still a happy Fediversian, here’s why. Yeah, there aren’t as many people and it’s kinda geeky and leftist and queer; also unattractive to billionaires and CEOs. I can see why that’s less appealing for some folk out there and, well, OK. But I’m having fun on Fedi. And it’ll be a loooong time before I waste another hour on X.

Color Study: Fujifilm vs Pixel

2026-10-11 03:00:00

Our neighorhood has many deciduous trees, which means, in Canadian October, lots of bright colors overhead and also on the ground. The camera (from its corner in my office) and phone (from my pocket) both quiver with eagerness to be pointed at those colors. Sinced I’ve grumbled a bit recently about the Pixel’s color rendition, I thought I should try some side-by-sides. So here are three pairs of pictures from the mobile and the “real” camera.

The gear

The mobile is a Pixel 10, shooting with the default Google camera app. Since it shoots at a wider angle than either of the camera lenses I used, those shots have been cropped down quite a bit, but I don’t think that affects the fairness of the comparison.

The camera is a Fujifilm X-T5, four years old now but not too far off the state of the art. For camera nerds only: The sensor is APS-C not full-frame, which is why the body and (especially) lenses are smaller and lighter.

Two lenses are used; amusingly, they are the pair I bought with my first Fujifilm camera in 2013, the 35mm F1.4 and the 18-55m F2.8.

For each pair, the pictures were shot at the about the same time.

I used Lightroom, but only to crop and rotate the Pixel shots. Which you could argue is a flaw in this comparo because normally I touch up photos quite a bit before I share them. But I think these straight-out-of-the-camera versions have something to teach.

Fallen autumn leaves, shot with Pixel 10Fallen autumn leaves, shot with Fujifilm

Pixel above, Fujifilm + 35mm F1.4 below.

I could have made a flip-to-compare widget but that’s too much JavaScript for the weekend. Get the enlarged versions open in adjacent tabs and flip back and forth
if you want that kind of thing.

Look, I like the Pixel, it’s not a “great camera for a mobile”, it’s just a great camera. I use it all the time with confidence that it’ll give me an excellent chance at a keeper. But it doesn’t come off well here.

I can guess why: First, this was a cloudy afternoon with a row of big houses between the leaves and the part of the sky the sun was in. Apparently the Fuji sensor does better with this particular flavor of low light.

Second, that lens; I think a whole lot of people in Fuji-land would agree that that 35mm F1.4 is one of the greatest lenses ever made by anybody ever. Things just look better through it. Go looking online and you’ll find lots of moist but inarticulate voices and they’re all saying something along the lines of “I dunno what it is but I like it.”

In this case, the Fujifilm picture looks strikingly more three-dimensional than the Pixel’s. Lens design is one of the last domains of analog engineering design. For which I’m thankful.

The Pixel version is light on context and the less-dark leaves look blown out. It would benefit from Lightroom adjustments but I don’t think it’d catch up.

Fallen autumn leaves, well lit, Pixel 10Fallen autumn leaves, well lit, Fujifilm

Pixel above, Fujifilm + 18-55mm F2.8 below.

When I got these two up side-by-side on the screen I wondered “Is the Fuji exaggerating the saturation and contrast and brightness?” Maybe so. But if the Pixel version is accurate, I don’t think I would have been impressed enough to take the picture. The cameras’ opinions on the relationship between the red and yellow differ sharply. I think the Fuji is right but I can’t remember where exactly I shot that, so I haven’t checked.

If you zoom way in, the Pixel actually got slightly better focus. Which is irrelevant to the way the picture looks on screen. You might be able to notice on a really big print?

Anyhow, I’m not sure what’s going on here. There was plenty of light; the Pixel was at 1/180sec, the Fuji 1/60. Now I’m going to be suspicious of my camera, is it lying to me in a pleasing way?

Autumn leaves against blue sky, PixelAutumn leaves against blue sky, Fujifilm

Pixel above, Fujifilm + 18-55mm F2.8 below.

Obviously, all the light anyone could want, loads of contrast, and it’s hard to pick a winner. The Pixel does a little bit better at capturing branch textures; those branches are mostly just silhouettes per the Fuji. If you look really close and care a lot, the Fuji’s take on the color of the sky is better. I’ve griped about this before, I think there’s something in the Google computational photography that detects sky and slams the pretty-sky-blue lever over on the color mixer.

Take-aways

I’m pretty sure I would have been willing to share either version of each of these pictures, especially post-Lightroom. Since the Fuji is shooting RAW, those files would have had “deeper data” and thus more scope for pulling light out of darkness or texture out of highlights.

The differences in image quality are there, and they’re significant. But the “real” camera’s biggest advantage is that it’s shaped to fit in your hand and has physical knobs and dials to adjust things, and is awake more or less instantly when you turn it on. It’s not trying to be anything but a camera. Also, you can attach a huge variety of funky lenses, including extreme telephotos. The bottom line: Cameras are immensely more fun to shoot with. But you’re going to have the mobile with you more often.

I’m pretty sure my conclusions would have been the same had the camera been a Canon/Nikon/Sony or whatever. But the Fuji cameras have better ergonomics than those.

The phone-cams will go on getting better. But until they can do the hand thing and the lenses thing, I can’t see going without a real camera.

The Purpose Isn’t What It Does

2026-09-25 03:00:00

“The purpose of a system is what it does.” Such a neat little turn of phrase; it makes you sound wise and cynical and like a person who sees through things. But it’s mostly wrong and almost always counterproductive.

A bit of background; the phrase (and let’s just say “POSIWID”) was coined in 1979 by a British management consultant. It’s thrown around heavily; a search on my Mastodon server turns up plenty of examples. Most of which, instructively, are lightweight arm-waving. Try it on yours.

Rhetoric

It means “the art of persuasion” and more specifically, the category of language used in an effort to convince, to make a point, to help another human understand your point of view. POSIWID, if it’s to have any currency at all, should be useful as a rhetorical tool.

Which matters. Because we are currently embedded in a torment nexus around values and humanism and antifascism and tolerance and late-stage capitalism and AI and AI and AI and AI. We need good rhetorical tools. And we need to be clear about what the purposes of systems are.

My claim is that POSIWID doesn’t help us understand the why and who of the malignant forces we’ve found ourselves horrified by and, I hope, are fighting back against. In other words, it’s rhetorically lousy. Let’s work by example:

The purpose IS

The purpose of GenAI IS to increase the wealth of a tiny handful of already-wealthy people.

The purpose of Grok/X IS to promote Musk-flavored fascism.

The purpose of the Fediverse IS to serve as a conversational platform that can’t be bought or shut down.

The purpose of a handgun IS to kill humans.

The purpose ISN’T

The purpose of the Internet ISN’T to serve revenge porn.

The purpose of a hammer ISN’T to enable domestic violence.

The purpose of the automobile ISN’T to accelerate the climate catastrophe.

The purpose of GenAI ISN’T to usher in a newer better world.

Late capitalism again

If we believe that money talks, we need an add-on. Because almost anything with a lot of human and/or financial investment also has the purpose of enriching someone. For example: The purpose of a handgun IS to enrich its manufacturer. So in discussions of purpose, let’s not leave that out.

Also, note that unlike many of the other things in the lists above, the purpose of the Fediverse ISN’T to make money for anyone. It’s fairly unique in that respect.

And, as the handgun example illustrates, it’s usually “purposes” not “purpose”, plural not singular. Another reason why chanting “#POSIWID” is generally misguided.

Anyhow…

When we engage in struggle for or (more often, these days) against something, we need to understand its purposes. And a vacuous mantra like POSIWID doesn’t help.

Regulate and Standardize AI? Nope.

2026-09-19 03:00:00

Nate Silver’s latest is A supermajority wants to slow AI down, noting the general convulsion of fear provoked by the AI Guys’ it’ll-kill-us-all palpitations. From which:

And then there’s a weird faction of AI denialists — people ostensibly on the left — who are convinced that AI is all a scam and therefore there isn’t much need for regulation.

In parallel, the IETF (Internet Engineering Task Force, the people who standardize protocols so the Internet can work) is seeing a steady flow of proposals along the lines of “something Agent something Validation something Enablement something”.

Money

I’m a leftist (but not that weird) and I think regulation and standardization of LLM-land are a waste of effort at this point in history. Because money. You don't have to believe all GenAI is crap to think that the financial premises are, well, crap.

First, the only sector today where there are large numbers of people willing to pay substantial sums for access to AI services is software. Software people are roughly 1% of the global workforce, which isn't enough to move the financial needle.

For the other 99%, are they (or their employers) willing to pay enough for AI goods and services to turn a profit on the global multi-trillion-dollar investment surge? I could be wrong but I don't think so.

That leaves the possibility that employers can discard tens of millions of knowledge workers, thus boosting profits enough to validate the global investment premise. I don't think it's weird to find that scenario dubious.

Finally, I don't see how we can have a rational discussion of regulation or standardization under the huge global investment overhang. The miasma of greed and fear obscures hard facts of actual utility and ROI. Which you can’t regulate or standardize without. My advice is: Let’s wait for that bubble to pop.

Money’s the biggest issue, but there are other bad problems with regulation and standardization

Moving target

For standardization in particular: The technology (and business landscape) are changing really fast and all the time. I’ve personally had multiple conversations where I say “X is a dumb thing about LLMs.” The response is usually “X is so six-weeks-ago. Everything is perfect now.” Please, please, don’t make anyone sit on a committee trying to specify anything about technology that’s so obviously immature.

The law

And for regulation: There’s the money issue, and then there’s that moving target issue. But I think current law remains a useful tool as-is.

If you launch an LLM-backed agent and it causes me serious business or personal damage, I think I can hire a lawyer and sue your ass. Because lots of people are, notably including most of the world’s largest publishers.

If it causes large numbers of people personal or financial harm, you’ve probably violated existing law and might find yourself facing a criminal conviction. We already have a solid precedent that saying “the AI did it” is not a valid defense. Yeah, obviously, a legal assault on huge, rich, and fashionable entities like OpenAI and Anthropic is an uphill struggle. But if Nate Silver is right and the anti-AI rage is bipartisan, the BigAI castles may be built on sand.

My answer

As a senior and fairly visible software person, I repeatedly get questions like "should we be scared?" and "will I lose my job?" My answer is always the same: Wait for the bubble to pop, then we'll find out.

Canceling Emily

2026-09-09 03:00:00

Meet Emily van Lidth de Jeude, an artist who lives on an island and has the most adorable chicken coop you’ll ever see. Those URLs start with emilyartist.ca now; until recently it was emilyvanartist.noblogs.org. But that site, there for many years, is down now, and not coming back up. Why? Well, her email address used to end with @autistici.org (it’s broken too now), and therein lies the story.

It’s because the Trump administration declared that the “Autistici/Inventati” collective hosting Emily’s website and email was a terrorist organization, and blasted them off the Internet with legal nuclear weapons. Here is the A/I collective’s statement. A more compact journalist narrative is Als de Amerikaanse regering je tot terrorist heeft bestempeld: deze Italiaanse internetprovider kwam vorige week op de sanctielijst which is in Dutch but it machine-translates nicely. Emily’s own take, on her blog, is Canaries of Hope.

It’s been professionally and personally devastating, vanishing Emily’s online history and nuking her email network.

Emily van Lidth de Jeude painting

Canadian eco-social practice artist Emily van Lidth de Jeude in her studio, 2023, working on a series about wildfires. Beside her on the floor stands a portrait of her Ukrainian grandmother.

I suppose most people reading this saw the Autistici/Inventati news story and shook their head at yet more MAGA malfeasance. Me too. But then I found out about Emily’s story, initially on her Fediverse feed, and that made it concrete. The wastrels in Washington can reach across the ocean and silence a Canadian creator on an Italian website. With no prior legal process, nor any way to resist, and without fear of consequences.

They can probably do the same to you if you displease them sufficiently. They’ve done it once now and from their point of view it went flawlessly, so why not again and again and again? The only reasonable prediction is that they will.

It might be the case that if A/I had been in the US, they could have mounted a defense based on Section 230, but I’m no lawyer.

I’m also no DNS expert; but I know some good ones. So I asked if there were any countermeasures available to non-US entities. The answer: “Nope.” I asked “What about a national domain like .ca?” Still nope, any national registry could be targeted by US legal warheads.

So, I could be taken down by this time tomorrow, just like Emily was. And like her, I’d have no comeback. You too, maybe. I remember, back during the Cold War, we described our part of the planet as “The Free World”. Every year it gets harder to believe that label.

This is a politics and policy problem. So in the big picture, the only way to prevent this kind of abuse is for the Americans to stop electing ignorant corrupt lawless narcissists. Starting this fall of 2026.

In the meantime, follow Emily online, she’s fun. And have a look at her art, some of it might look good where you live.

Clankers and Data Races

2026-09-02 03:00:00

I just landed a PR that fixed a nasty data race in Quamina. Which shouldn’t have been technically challenging, but I took side-trips into Erlang, unit test footguns, whether or not I should go on accepting LLM-generated PRs, and programming while aging.

Let’s address that last issue first.

“No” on clanker PRs

In late 2026 we know that:

  1. Claude and its competitors can write perfectly decent code, particularly where the task at hand can be narrowly focused.

  2. They’re also good-to-excellent at detecting vulnerabilities.

  3. The underlying GenAI technology has serious negative externalities in (at least) the domains of environmental impact and intellectual property.

  4. Using this technology might enrich and empower people about whom I feel contempt and fear.

  5. The vast majority of people whom I care about and respect are experiencing real unhappiness about the GenAI big picture.

I’ve never personally put clankers seriously to work and for now I’ll continue not to. I have been accepting Claude-authored PRs but, to the extent I can detect them, I’m stopping. This will have a real cost; some of those PRs yielded big performance boosts. Also, they were built much faster than I could have managed.

But the picture is mixed. Specifically, I have to admit that I don’t really understand the 500 or so lines of clanker code and test that compute epsilon closures for nondeterministic finite automata. Sufficiently so that I’ve written an issue to think it over, understand it, and with any luck, simplify it.

Interestingly, we got to the current epsilon-closure code in a sequence of reasonable-looking PRs that I reviewed, asking for changes in most. But in the big picture my reviewing was ineffective, because it ended with a large lump of code that I don’t understand or, at the end of the day, trust. I wonder how typical that outcome is?

There’s an exception to my new policy: Vulnerability reports. I think it’d be irresponsible to ignore them and penalize Quamina’s users because I don’t like the source. Somebody did a Claude scan which found 14 problems at various levels of criticality. I’ve created issues and hope to retire them all soon.

Pruner race

The ugliest problem the clanker found was a data race in a piece of Quamina called pruner (that most people don’t use). So I bashed out a quick unit test that ran several thousand read operations in one goroutine and the same number of updates in another. Sure enough, on its first run it instantly exploded in a flurry of data-race complaints.

The problem wasn’t complex and my first cut at a fix worked fine, the unit test running flawlessly. But, also very slowly. I (reasonably, I thought) went looking for contention problems around the mutexes I’d just added. The profiler seemed to be saying that the slowdown was in Quamina’s core matching methods, but that made no sense at all, so I dug deeper and deeper into the Go sync primitives. And found nothing useful.

Concurrency bugs are extra irritating. Also, I’m semi-retired and doing this for fun, so I put it down and ignored it for a few weeks.

Functional love

There was a bright spot in this sad story. I mistakenly thought I’d found my problem in a statistics-gathering type with several mutexed fields. So, cackling gleefully, I turned them into Erlang-flavored accumulators updated with Go channel messages, a programming idiom that’s always given me a warm glow.

It didn’t make any performance difference but the code was smaller and prettier.

[Update: It’s subtly buggy in a way that doesn’t impair its usefulness; created an issue, will fix.]

Unit tests are good except when they’re not

When I got over my grumpiness and went back to the problem, I started by looking at the unit test. Oops. Turns out the read-only thread was (unsurprisingly) running twenty times as fast as the update thread and since they were doing the same number of operations, it finished up instantly and the updater-thread kept thundering away. For reasons that need not concern us, in this specific benchmark scenario a stream of heavy add and delete operations without any stats-gathering read operations leads to massive, horribly complex NFAs. Then the matching runs slow — exactly what the profiler had been trying to tell me, only I thought I was smart enough to know better.

So I forced the reader thread to keep running until the other finished and hey-presto, the race was still fixed and everything ran at typical Quamina speeds, which is to say very fast.

(I didn’t get rid of the Erlangified stats package though, I just liked it too much.)

I’m normally tolerant of a certain amount of sloppy informal YOLO power-coding while constructing unit tests — more are better! — and I think I still am. But this was a painful experience that I’d like to avoid in future. So, is there a lesson here? Maybe there are two: First, believe what the profiler is telling you! Second, if you’re having trouble understanding unit test output, dig around a bit and make sure it’s doing what you think it is.

Grey-haired programmer

Even when I’m mad at my software, I’m grateful that I still enjoy working on it. I think it supports my main post-employment objective, which is to keep my brain working. And who knows, the software might help somebody somewhere.

And best of all, when nobody’s paying you to work on something, you can take a few weeks off whenever you’re not in the mood.