2026-10-20 03:00:00
I continue low-intensity work on Quamina; among other things, it benefits my my mental health. At the moment there’s this little voice at the back of my brain that keeps saying “This would be a great job for Claude.” So far I’m ignoring it, but the internal conversation is worth sharing.
I’m not a GenAI expert, have never relied on it for any substantial piece of work. However, I’ve seen plenty of PRs with LLM fingerprints, and I follow a whole lot of indie devs who are in it up to their elbows. It seems to me that a pretty clear picture emerges of what it can and can’t do, where the wins and losses are. This essay reflects that picture but maybe I’m just wrong, in which case I’ll confess my errors.
For me (and I’m not alone), the biggest issue isn’t what GenAI can and can’t do, it’s the ethical and economic discomforts. This technology is being peddled by terrible people who are rich and whose goal is to get richer. It’s bought and deployed by terrible people who want to slash their payrolls by throwing thought workers onto the street. It facilitates the oncoming climate catastrophe and devalues human creative effort.
Notice that I said “ethical and economic”? That second issue is all about the bubble and how nobody knows what GenAI technology will really cost, post-explosive-decompression. It wouldn’t surprise me if we ended up in a future where most software devs are using beefy “desktop” computers running open-weight models; or else they’re using AWS/GCloud/Azure (but still open-weight). Or something completely different. Or we’ve learned that the cost of AI, as measured in mental fitness and organizational health, is simply too high.
The stage has been set; let’s talk about bits on the wire.
At the moment Quamina does its super-fast-matching magic on JSON blobs. But it should be perfectly possible to work with any other data format that has nested fields and boolean/numeric/string values at the leaves. Oh, and arrays of the above. There’s no shortage of candidates: Thrift, Protobufs, Apache Avro, and CBOR come to mind immediately.
Quamina has the built-in notion of a “Flattener”, that turns input data into a sorted list of “Field” structures. For example, here’s a JSON blob:
{
"X: {
"Z": 22,
"Y": 21,
},
"A": 33
}
The output of the flattener, what the matcher works on, would be something like this:
{"A": 33}, {"X\nY": 21}, {"X\nZ": 22}
In Quamina, flattening eats more time than matching. It used to eat dramatically more time, but the JSON flattener has been heavily optimized by me and other contributors.
Maybe the most important optimization is maintaining a list of which fields are actually up for matching and skipping over the ones that aren’t. Obviously this means that the parser can’t be the typical thing that turns your JSON blob into a fully-serialized tree of structures and arrays in a one-shot call. In fact, you need a parser that’s a tokenizer and lets the calling code decide how to deal with each little piece of it, one at a time.
Someone out there asked Claude to build a Flattener for Protobufs. It seemed to partly work but was kind of buggy and I found the code hard to read. Hmm. Of course the usual GenAI “That was six months ago, it’s much better now” narrative applies.
For those who don’t know, CBOR is JSON but binary, which is claimed to make it more compact and faster to process. It’s also got a slightly richer type repertoire, but whenever I’ve run across it in the field, it’s basically being used as JSON-only-faster.
So, I’ve started working on a CBOR Flattener for Quamina.
The default CBOR processor for Go, from Faye Amacker, looks very polished. But it’s not a tokenizer, it’s a “deserialize your whole blob in one call” thing. So the simplest thing would be to make that one call on each incoming blob, then run around the deserialized tree and compute the flattening. Ignore all that stuff about bypassing for efficiency. Because it might be plenty fast enough and that optimization would have been premature. After all, if you read Faye’s page linked above, they seem to be something of an optimization fanatic.
And you know what, I bet if I gave Claude the problem of turning CBOR into Fields, I’d get OK code back; tell it find a way to fuzz-test the process and it’d be surprising if it didn’t work.
Right at this moment in history, I could make a case for that being a good engineering decision. Code, in the LLM-pre-bubble-pop era, is cheap. Time is still expensive. This task has clear, clean success criteria, easy to point an agent at. The Simplest Thing That Could Possibly Work is a powerful design principle, one that I’ve forced down the throat of more than just one or two over-aspirational engineering team leads.
But I’m not gonna do that. I mean, there’s the nauseating state of current AI culture and finance. But also, I’m doing this for fun. Writing high-performance tokenizers is fun! [Really? -Ed.][Serious fun. -T.] I’ve started poking around inside Faye’s library, raised an issue, and I’m confident that there is plenty of code and tests in there that I can steal.
Quamina has 14K lines of test code and 47M of of test data. A high proportion of the tests amount to “Run the code against this JSON and require these results.” Obviously, now I want to run 100% of those tests with equivalent CBOR input. It seems to me that Claude could do a great job of automating plenty of this work, which I predict will be grinding, tedious, and not fun at all. On top of which I tend to be lax and forgiving about test-code quality.
My internal engineering-leader mind has no doubt, it’d tell the devs to automate the hell out of replicating the test suite and not be picky about how. But I bet that it’d burn a whole lot of tokens, which means routing money to bad people with bad goals. So once again, I’m not going to do it with LLMs.
Post-bubble, it might be somewhere between forgivable and praiseworthy. But not as I write this.
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.
Well yeah, Elon isn’t in everyone’s feed, clearly a major quality-of-life improvement.
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.
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.
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?
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.
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.
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.
2026-10-13 03:00:00
What happened was, Lauren’s NZ family includes a nephew who’s currently living in Brisbane and got married last month, so a dozen or so Kiwis and three of us Canadians got on airplanes and converged on easternmost Australia. We went on to tourist a bit and visit friends in the Melbourne area. Came away with impressions and pictures.
Australia’s different. I don’t claim any particular deep understanding, but at least we were mostly among locals and often off the tourist trail. Also I find some of the pictures pleasing.
Damn, that’s a long plane flight.

Eleven or so hours into the journey, dawn over the Pacific; ice crystals on the windows plus something put the Pixel into Macro mode and thus the reflections. Vaguely self-portrait-ish.
It was great; she’s a Grade 4 teacher and he’s a cop. They’re both exceptionally attractive and have large supportive families. It was well-organized and good fun.

The mothers of the bride and groom both looked very sharp.

Niece of the groom sends a silhouetted heart.
The city didn’t do much for me, but maybe that’s because we were mostly out in the burbs: Our Airbnb, the Kiwi-branch Airbnb, the bride & groom’s place, and the wedding venue. All in decent but (except for our joint in Brighton) not terribly memorable neighborhoods.
Also there was “Chermy”, the Westfield Chermside Mall. OMG. It’s the size of a small European nation and getting prepped for the wedding required enough time there to drive my nervous system nearly to meltdown, I’m not good at malls.
I’m left with the impression that Brisbane is designed and optimized for automobiles but, once again, maybe we just came at it wrong.

Low tide off Flinders Parade in Brighton, Queensland.

Kookaburra of course.
After the wedding there was a gathering at Felons Brewing, an absolutely massive gastropub on the banks of Brisbane’s river, which I totally recommend. The place is too big but somehow they make it work and the food is really good.
Our dear friend Sally, after a long career in Melbourne, sold her house in a decent Melbourne neighborhood and bought something of a palace in Warragul, a couple of hours by train to the east. It’s in Gippsland, a green and pleasant part of Australia.
Warragul is small, busy in the center, and very quiet outside it.




Warragul.
My favorite thing about the town was Bandolier Brewing, which has a friendly and relaxed small-town vibe and terrific pizzas. The beer is OK but not memorable.
The countryside around it is remarkably nice.

Looking down on Gippsland pastureland
from the
Cape Horn Lookout.
Lauren got her Ph.D. here and has lots of context on the place, plus still a few friends. It’s a cool city; the fact that it’s got twice Vancouver’s population shows. A whole lot of style statements were really working, plus the streets and alleys operate on a welcoming human scale.


It’s a foodie city, which as a side-effect highlights a big difference between there and here: Pay is better in Australia. Here are the minimum-wage rules (for Americans, those Aussie bucks are worth about 70¢ just now). Those rates are a lot higher than where I live. “But,” our taxi driver told us, “nobody’ll work for the minimum, you have to offer more than that.”
This is in your face when you eat out; first, because everything on the menu is expensive. Second, nobody asks for a tip. I kind of like this set of trade-offs and wish North America would get a clue. If you follow that minimum-wage link above you’ll observe it’s from “Australian Unions” and they claim a lot of credit for the pay structure. To the extent that’s true, good on ’em.
Anyhow, back to Melbourne. The center of the town is Flinders Street Station, which I’ve pictured on this blog before and will again; the place makes me happy.


At Flinders Street station.
On our last day we visited the Vic Market, where a huge and remarkably random selection of merchants sell, more or less, everything imaginable. A cheery place; my daughter and I had a food-truck lunch (me: Ethiopian, her: Mexican) that was at least competitive in quality with the fancier-restaurant fare.


Here’s a place near Sally’s in Warragul.

It nicely illustrates a few of my take-aways. Item: Vast lawn. Item: Nice brickwork. Item: Capacious roof overhang for shelter from rain and sun. Item: Since they don’t have alleys, every house has a front-facing garage (behind the bush in this pic). Item: Solar; in reasonably new/modern areas, somewhere around a third of residences have these. It’s subsidized enough to make it a financial no-brainer. Item: Impeccably clean road and curb. Item: Single story, no basement or upstairs.
I actually like a lot of the Aussie residential architecture. Pity about those front-facing garages.
Finally, speaking as a full-time hat wearer, for my money Akubra makes the world’s coolest. Expensive, but rugged and stylish. Check ’em out.
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 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.


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.


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?


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.
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.
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.
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 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 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.
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.
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.
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”.
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
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.
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.
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.