Comics, Weakly

Here’s some comics I’ve read over the past few weeks. I’ve had almost no time to read comics lately…

When translating/collecting works from prolific artists, publishers wisely publish the best material first. I mean, you want the people who pick up the first volumes to be impressed and keep buying.

So what are we getting in the tenth volume of Fantagraphics’ monumental collection of Guido Crepax stuff? More than three thousand pages in?

Yes, “Surreal Stories”, as the cover says, but I’m not sure that’s what most people would call these pieces. The main thing here is a two-hundred-page Bianca… er… non-story, where we basically see Bianca vaguely proceed from torturous tableau to torturous tableau.

Crepax’s best stories are also pretty vague, but you feel compelled to keep reading, because things sorta kinda tie together in a strange way, but this is basically just a collection of Crepax’s fantasies. I mean, the line is still great, but it’s just hard not to fall asleep when trying to read this.

I remember quite liking Leah Hayes’ previous book?

And the art here is still attractive.

And while it’s got a mood going on here, it just feels very slight.

I filled my Spirou quota.

There’s a special issue here about various Spirou authors going to the natural history museum, and that sounds like it’s going to be fun…

And it is, I guess, but it seems like they mostly come up with the same gags. So it gets a bit repetitive.

And there’s now two serials running that I dislike (Louca and Starlight), so not really a good batch for me.

I bought this by mistake — I was totally thinking of somebody else, and not Darryl Cunningham. Is there a different comics artist called Cunningham? One that’s good?

Because this isn’t — it’s pretty annoying, from micro problems like “what box?” “this one” while pointing to a big square thing, but she’s talking about the box in her right hand, to bigger problems like…

… everything about this.

I bailed after a couple dozen pages.

I’ve seen some chatter about this book by Marina Lisa Komiya on the timeline, but I haven’t really paid attention to what the reactions have been?

The line is very attractive.

But the style used allows for such limited range of faces that it’s very hard to keep people apart — you really have to go “this one has slightly longer hair”, “this one has slightly more frizzy hair” etc, and if it’s windy, you’re shit out of luck.

Plotwise, it feels like an algorithmically derived plot. I didn’t dislike the book or anything, but I did roll my eyes a bit at All The Drama.

I’m guessing this will end up on many “best of” lists for 2026.

Michel Vaillant is, of course, an extremely long-running French(ey) comics series, but I’ve never read any books from the 2010(ish) “revival”.

Many of these “revival” books settle on a refreshed look and a new start (of sorts), but this is apparently very much the same as before, and with all the characters older than before.

And unfortunately, it’s really boring. This album is about introducing electric racing cars, and there’s lots of dramas because the Vaillant boss doesn’t want to ditch petrol cars and stuff. I was wondering whether it had been made as a promotional tool for some French electric car maker or other, but apparently not?

And finally, I’m continuing to read Corto Maltese in translation to French.

And colourised, because I’ve read the original black and white versions so many times before.

And this album collects fantastic twenty-pagers — every piece is a perfect Corto Maltese story.

I think I’ve only got one more of these to go before I get to the album-length books that Hugo Pratt would continue to do in the late 70s/80s. They’re also great, of course, but these 20-pagers are simply the best.

And that’s all. See? Almost no comics reading! I’ve gotta get serious.

Hacker News Decoder Ring for Emacs

People say that language is for communication, and every day Hacker News proves these people wrong.

I mean, it’s not just Hacker News, but it’s the place I encounter this phenomenon most often: Somebody will be discussing something, and then somebody else will respond with a short sentence that’s mostly acronyms.

The fascinating thing about these responses is that if you know what the acronyms mean, then what’s being stated is often trivial (i.e., something that everybody who knows what those acronyms mean already knows). And if you don’t know what the acronyms mean, then the sentence is completely opaque.

(Often seen, for instance, when discussing network issues, and somebody responds with an alphabet soup involving acronyms like “BGP”, “AP”, “BMP” and “FRX”.)

So these utterances function two ways: For the people who’re on the “inside”, they’re saying “I know this stuff, like you other smart people…”. For the people who’re on the outside, this expresses “… and you’re a moron”.

I guess that’s a form of communication after all.

But for fun, I just whipped up a new command for Emacs called shr-etla (for obvious reasons) and put it on Microsoft Github. Here we have it in action on a totally random Hacker News comment:

It works by sending the paragraph over to an LLM, and it also tells the LLM what web site it came from. This context is vital, because many abbreviations expand to many, many things, and the LLM needs to know what kind of person it’s trying to decode.

(Googling for abbreviations is usually pretty useless — 74% of the time you get a bunch of other meanings; usually an American company or other that’s been SEO-ing the results. (“SEO” means “Search Engine Optimisation”, which is a form of terrorism.)

Of course, all of this doesn’t help much in many cases:

I guess!?

(caveat accipiens — like all things involving LLMs, this Emacs command is just a toy. The LLM has been instructed to return JSON with the results, and it does so in 99% of the cases, but in some cases it’ll return something else, and then you just have to run the command again. Or it’ll have done something else, like translate things into Kyrgyz; who knows? But that’s just part of the fun.)

Are AI web scrapers patient or do they cheat?

I’ve blathered before about how hard it is to do traffic stats these days — AI scrapers run full browsers via VPNs with residential endpoints. So you can’t distinguish them from real traffic, really.

I mean, none of this matters, but…

One trick that really helps weed out scrapers from the stats is to just not “count” a web page visit until the page has been open for more than ten seconds. Yes, you lose real readers that bounce fast, but whatevs.

However, there are scrapers (as shown in the above screenshot). That’s a pretty typical trace — you get dozens of hits from all over the world to the same obscure blog post, but using the same User-Agent.

What I was idly curious about was this: Since I’m using a setTimeout to register the page view, are these scrapers really keeping a web browser open for ten seconds? Or are they just collapsing setTimeout calls and doing everything immediately? (That’s certainly what I’d do if I were an evil scraper.)

So I had a look at my Apache logs, and:

Yeah, it’s a real browser with no collapsing of the setTimeout values.

I checked a couple more, but they show the same pattern.

So there you go — these scraper people have way too many resources to burn.

UX IS US

A month ago, I wondered idly whether translation gadgets (for quick word lookup) exist, and while everybody said “just use your phone, dumbo”, that’s just too sensible for me. And way too inefficient.

So while I pondered what to do about it, I bought some keyboards to see whether that could be the solution.

Small keyboards (and the one above is as small as they come) is such a cursed category. Either the keys are just too horrible or the range is awful, or a combination of the two. So I wasn’t expecting the above to work (a DarkWalker Wireless Bluetooth Keyboard, M4 Mini Keyboard), but… the keys don’t seem awful, really?

Let’s see how it works, though — I’ve paired it with my laptop, and I’m going to write the word “cheville”:

Yeah. It doubles up key presses like crazy. And this is paired with my laptop, so the distance between the keyboard and the Bluetooth receiver is just a few centimetres.

Trying several times, I have yet to make it through “cheville” correctly even once — in addition to doubling keystrokes, it also loses some here and there.

It also seems to go completely AWOL if you let it sleep after pairing? Which may be a Linux problem for all I know. The range isn’t awful — I get five metres easily.

But while it’s a nice form factor, it’s completely unusable. So onto the next:

This is a Phistone Mini Keyboard with Triple Mode, so it’s got a 2.4GHz USB dongle in addition to the Bluetooth. Which, in my experience, usually works better on these types of things.

But man, that’s one ugly keyboard… and it works! I’m not getting any missed keystrokes or any doubled ones. So let’s start implementing something!

After typing away a bit (the results are on Microsoft Github), I’ve now got something that seems to work.

Let’s see… here’s my normal position in my reading chair, and I have the li’l ugly keyboard on the table next to me, and there’s a screen over there that normally displays the cover artwork of the album that’s playing on the stereo… So let’s see how efficient this is:

Hey! This actually kinda sorta has possibilities…

The Emacs over there is querying the Microsoft Azure Translation API behind the scenes — I tried a couple of other services first.

DeepL just returns one word, for instance, which is pretty useless when looking up words (because most have several meanings):

(deepl "cheville")
=> (:translations [(:text "dowel" :detected_source_language "FR")])

I was looking for the more normal meaning of “ankle” here…

Anyway, Azure API is free, and returns a list of resulting words and word classes, so that’s pretty ace:

(aztrans "cheville")
=> (:source "cheville" :translations ((:target "ankle" :type "NOUN")
				      (:target "peg" :type "OTHER")
				      (:target "pin" :type "NOUN")))

Thanks, Microsoft! Not everything you make is a crime against humanity!

(I mean… that I know of…)

The Emacs package works by grabbing the evdev device for the li’l keyboard, so that X doesn’t see any of the events. And then it just pops to a new window configuration and displays the input, and then finally queries the Azure API before popping back to where you were…

So this works, but that keyboard really is too big to be on my table here permanently. Does anybody know of a keyboard that’s more like that first keyboard, size wise, while working as well as this larger keyboard? Or perhaps not that small — something halfway between these two keyboards would be ideal. And not more keys than are needed — the small number of keys on that M4 keyboard is nice.