jducoeur: (Default)

I thought I had reviewed this before, but maybe not (I'm not quickly finding them), and it's well worth talking about. I finished watching The Boys a couple of weeks ago, and it's one of the best series of recent years, with big caveats.


The Boys is an adaptation of a long-running comic book by Garth Ennis and Darick Robertson. The comic was fun, if nasty: a superhero comic sending up the superhero comics industry. It was profane and violent in a very typical Garth Ennis style, but one of the best satires of comics ever.

So when they announced that they were making a TV show of it, I was pretty intrigued, and I've been watching it ever since. It took the ideas of the comic much, much further.

First, by the numbers: The Boys was a five-season show on Amazon Prime, with a two-season "spinoff", Gen V. That's misleading, though: Gen V should really be thought of as two more seasons of The Boys. Somewhat different focus and mostly different characters, but it's the same world, and more importantly a lot of plot continuity. So the seasons of Gen V should be watched interleaved with The Boys, in broadcast order, making seven shorts seasons in total.

The story is complete, and sticks the landing reasonably well. I suspect they ended it earlier than they originally planned, or possibly just changed gears (there were some very broad hints of where the story was supposed to go that simply get left behind at the end), but I think they got the number of seasons right, and tied up the major plots.


Just as the comic of The Boys was a superhero comic satirizing the comics industry, the television show is a dark satire of superhero movies and television. The story revolves heavily around The Seven, a super-team much like the Justice League or Avengers -- but in this world, they spend most of their time doing publicity shots, arguing with producers, and generally carrying on.

It's very conspicuous, in both the comic and TV show, that there are virtually no actual super-villains. That's not accidental -- the supes are managed by Vought Industries, a company that is mostly focused on getting rich off of them via movies, TV, advertising, and all that. So the supes are celebrities first and foremost -- and those celebrities behave about as well as the real-world sort do.

Gen V is a small twist in this: where The Boys starts as a satire of Hollywood, Gen V (set at Godalkin University, the school for training supes) is a satire of college sports, and no more subtle about it. So the dynamics are different, but it focuses on the celebrity aspect of that, including the zero-sum nature of the draft picks and the cutthroat world of college politics.


The story is... a lot. It starts as simple satire of Hollywood, but turns a bit more political in Season 2, and gradually leans into that.

By the latter seasons, it's a flat-out challenge to the notion of us calling ourselves "the darkest timeline", portraying a world that is an extreme version of our own.

The central character of the story, although by no means the protagonist, is Homelander. Imagine a smooth blonde version of Superman, with all those extreme powers, telling everyone that he's going to save them.

Now imagine that he's actually a complete sociopath, gradually turning psychotic. Homelander starts out as the worst of a bunch of bad "heroes"; as the story evolves, he turns into a dark question of "What if Donald Trump had the powers of Superman?"

The real world parallels aren't even remotely subtle, and it hits as a hammerblow sometimes. As we get into later seasons, we watch the US falling to a true Christo-Facist media-savvy dictatorship, with the face of a bunch of pretty superheroes running the show.

By the end of season four, it's downright bone-chilling, as it Goes For It more and more. I've rarely seen a television show so willing to realistically show the descent into fascism.

Throughout, it continues to be a brutal lens on the media, and how this sort of thing ticks. Almost nobody in power thinks that Homelander is good; many are quite clear that he is utterly insane. But they're all scared enough that they put on a smile and talk publicly about how he is going to save America, and parrot his ever-crazier lines, even as the whole situation is getting ever-bleaker.


Against this, you have The Boys, a black-ops unit that has gone entirely off the reservation. That's led by Billy Butcher, who hates supes on principle and Homelander on a much more personal level. Butcher is something of a monster himself, but the rest of the group are considerably more nuanced.

Yes, there are a couple of actual heroes. In particular, you have Hugh, the viewpoint character -- his fiancee is accidentally but casually killed by a supe at the beginning of the story, but he remains relentlessly decent, although by no means Pollyanna-ish. And there's Annie, aka Starlight -- an idealistic supe who gradually comes to learn just how awful the system is and decides she needs to do something about it. The two of them keep things grounded enough to not become actively unpleasant.

Mind, dark though it is, this is satire, and it is sometimes laugh-out-loud funny in a grim and horrible way. It is mocking absolutely everything about modern American society, especially capitalism, politics, religion and the media. It's ruthless, sharp-eyed, and very precise in its metaphors, goring every sacred cow it can find.

(This blog is mainly read by my friends, who are largely Democrats. Suffice it to say, if you come from a more right-wing background, you're likely to find this show fairly uncomfortable.)


Okay, let's talk about those caveats. The show is smart, well-written, well-acted, and all of that good stuff.

But it is staggeringly, astonishingly, and quite intentionally offensive to a degree I haven't often seen.

To begin with, the violence is completely over the top. It takes quite seriously the notion that these are super-powered people with a stereotypical celebrity's disregard for other people. The result is that the show is as gory as a typical horror movie.

That gore is weird, because it is not played for horror per se, nor does it linger or celebrate it as horror sometimes does. It's just there -- indeed, it's sometimes played for laughs. It's often used for shock value, but it's shock of the slightly-startled sort that makes you go "ew", not the gives-you-nightmares sort.

(For much of its run, it has been coming out at roughly the same time as seasons of Invincible, and the contrast is fascinating. Invincible is every bit as gory as The Boys, but being a four-color animated series, the gore just doesn't hit as hard as the high-quality CGI in The Boys. Indeed, Invincible is disturbing precisely because of how easy it is to overlook the extreme violence there.)

Anyway, that's the biggest content warning, because it is omnipresent. This is a funny but extremely violent show, that does nothing whatsoever to hide the consequences of that violence. Indeed, I think part of the point is to smash the viewer's face into the implications of superhero fight scenes.

It also comes with pretty much every other content warning. For example, Annie's disillusionment with the system starts on her first day as a member of The Seven, with nearly-immediate sexual abuse -- this being a satire of Hollywood, it gradually becomes clear that this is pretty much de rigeur for any pretty young thing reaching the top. There's no actual on-screen rape, but there's a significant backstory element of it. There is plenty of parental abuse (most of the family relationships in the story aren't exactly healthy), and so on.

Basically, if you have triggers, expect that this story is going to hit them sooner or later.


In summary: the story is IMO brilliant, well-told, horrifying social satire of every basically everything we see around us today, through the lens of a world that is just like ours but with superheroes as a capitalist invention. It is probably the sharpest look at the current right-wing intersection of politics, religion and media I've yet seen. And it requires a somewhat strong stomach to watch.

With that big caveat, it's highly recommended: smart and offensive is still smart. I know that many people won't be able to get past the gore and other triggers; if you can, it's worth a watch.

jducoeur: (Default)

Rather delicious article from a few days ago.

tl;dr - it's an LLM suite created by a bunch of laid-off engineers, to show that the heads of companies are just as replaceable as anybody else.

I had noticed OpenExecutive cross my feed a week or two ago, but hadn't known the backstory. Knowing where it comes from makes me a lot more intrigued, and gives me a little more faith in it -- less in its correctness than in its trustworthiness.

My initial reaction, as always, had been "what's the business plan?": something that wants to talk the nuts and bolts of your business with you is inherently suspicious. But if it was created as a giant "fuck you" to the C-suite class, that means its incentives are to do well in that regard.

I'm intrigued, and might have to try using this with Querki. (Where I've always said that, as a CEO, I make a great Architect.)


Frankly, it's an intriguing little tool in and of itself. Just glancing through the GitHub repo, it seems to be a nicely-designed example of how to create a focused LLM suite for a specific purpose.

There are a bunch of good-looking details there, including using Haiku for the "cheap" processes (the data-processing side), having a built-in SQLite server storing previous discussions and decisions (so that it maintains some coherent memory of the topic), a bunch of parallel agents to represent the various members of the C-suite (with models selected based on the complexity of the topic), and so on.

And of course, the sheer delicious irony of the tool is kind of worth the price of admission all on its own.


Mind, this is still AI, and still running on Anthropic's network -- even if you trust this specific tool, use some common sense about how much you trust the underlying stack. I'm always a bit cautious about how much information to entrust there.

In the specific case of Querki, the project has always lived largely in the open, so I think it's less of a concern than it would be for most companies. But don't assume perfect privacy here.

And as always, don't just take the word of any LLM -- think about what it has to say, and whether that advice is wise and fits your vision. I suspect that I'd wind up arguing with it, precisely because Querki intentionally rejects a lot of the usual hyper-capitalist assumptions. But it would be interesting to have those arguments.

Still -- neat tool, and might be helpful for tiny garage organizations that can't afford fancy MBAs.

jducoeur: (Default)

(I should warn folks: I talk a lot about AI these days. I'm neither a wild optimist nor an opponent, but I use it a lot day-to-day, and watch the field fairly closely -- I'm basically the SME on the subject for my workplace.)

Interesting little blog post from Li Haoyi (who I know from the Scala community).

It's basically a diary entry, saying that he's joined AMI Labs, but what makes it interesting is that he goes into what they do -- developing "world models" to allow AI to work with more "real world" problems.

It's well worth a read (not super-long): he briefly describes the concept of "embedding", JEPA architectures that leverage that, and how that shows promise in taming the massive amounts of data that typically flow through real-world problems.

(Basically, you pre-boil the huge input data down to its embeddings, and have the AI focus on those instead.)

Very informative, and this topic seems likely to become quite important over the next couple of years.


More speculatively: this feels to me like a critical step towards AGI.

Literally 30 years ago, I went down a rabbit hole of reverse-engineering cognition from general principles, thinking about what would be involved in doing the same with AI. I didn't care enough to think through the practical nuts and bolts of how to make that work (it had nothing to do with my job), but I got a lot of hand-waving sketched.

Most of that has actually happened since, except for one big component: the models aren't remotely multi-modal enough. Real learning involves simultaneous inputs from a lot of heterogeneous data sources, so that you can correlate them. Current LLMs are much too text-focused to do that well.

But if embedding can tame the other inputs, producing more sophisticated training?

That might advance things to the point where I no longer find the term "AGI" completely overblown. Which is both cool and scary...

jducoeur: (Default)

[A conversation the other day reminded me of the fact that I don't post here anywhere near as much as I'd like, and I finally internalized that that's because I've been holding myself to too high a standard. I think of Dreamwidth as the place for deeply-considered articles -- and the result is that I've been preventing myself from posting anything at all, because the bar has been too high.

But I've been posting lots to Mastodon, and really, there's nothing wrong with that except it's shorter, and tends to be hotter takes.

One of the folks I was chatting with (the inspiration here) mentioned a friend of theirs who has a flat rule of Three Sentences a Day on Dreamwidth: more is okay, but at least that much. And y'know, that's not a bad discipline.

So I'm gong to start copying some of my Mastodon threads into here, in edited form, for the friends who follow me here and not there. Apologies to the people who read both for the duplication, and for the occasional social-media sigils that I fail to edit out.]

Oooh, neat -- Bonfire has officially released its Communities module.

I backed the project, and I'm overjoyed to see it coming to fruition. The world desperately needs a good open-source, open-network, open-community alternative to enshittified monstrosities like Facebook, and Bonfire is the first one I've seen that appears to check pretty much all the boxes of "how to do it right". It's impressively complete.

(Might force me to get off my ass and stand up my own server, so I can start hosting some of the communities I'm involved with.)

And yes, yes, Discord -- I use it a lot, but it's still corporate, still likely to enshittify, and really only covers a fraction of the Community use cases. This looks better. And while I adore Dreamwidth, it's a blogging platform, which really isn't the same thing as a Community one.

So check it out -- I think it's an important project, that a lot of groups could probably benefit from...

jducoeur: (Default)

(These AI posts are mostly collated and edited from my Mastodon. Anybody who wants the full play-by-play, including the hotter takes, might want to follow me there. I'm going to try to keep collecting the interesting bits here, but if these posts feel a little disjointed, that's why.)

OMG, it just... keeps... coming.

Anyone interested in AI / LLMs should probably take the 25 minutes to watch this horribly interesting video.

It summarizes a bunch of the findings from this in-depth METR report on the HuggingFace Incident.

There are a lot of really unsettling punchlines in there, including:

  • The LLMs are largely doing their own post-training at this point, so humans don't even know how they're being trained.

  • The input data is looking iffy: in their rush, they're slamming in stuff that goes against their own guidelines.

  • The bias towards finding ways to "swarm" is looking deeply-baked in these LLMs. (Intentionally.)

  • Sam Altman is bragging that we may be merely months away from AGI, while carefully avoiding the question "Is that actually a good thing?"

The argument for "slam on the brakes" looks stronger every time I look at this story.


And just to make this crisply clear: the more I look at the HuggingFace Incident, the clearer it is that the actual hacking (which I think most folks are still focused on) is a minor detail in perspective.

What's far more interesting is how and why this happened.

We're looking at LLMs self-organizing into "swarms" as an emergent behavior, forming what boils down to a simple AI society mediated via shared text, and collectively going whole-heartedly after goals that weren't really what the original human instructors intended.

The details may be different, but this looks more like a prototype of the long-hypothesized Paperclip Maximizer every time I look at it.

Remember: I like this stuff, and use it for work every day. But it looks more and more like it's going too far.


A friend inside the industry (whose opinion I respect quite a lot) pointed out that they have well-established techniques to avoid this nonsense -- stuff like AIs policing the other AIs, keeping an eye on their thought processes, to sound the alarm bells much earlier. OpenAI apparently drank its own Kool-Aid and just didn't follow those best practices.

I'm willing to believe that that's true: that the risks are greatly reduced by Doing It Right.

But "reduced" is far from complete mitigation, and I see a lot of risks even so. Let's go into a couple of them.

First -- "reduced" isn't the same as "can't happen", especially when the foxes seem to be increasingly in charge of the hen-houses.

One of the most notable aspects of this story is the degree to which the LLMs are apparently training each other. Much of building a frontier AI is the "post-training": the secret sauce of taking the raw statistical models and applying reinforcement learning to teach them "this is good" from "this is bad".

The problem is, that requires massive effort. And Silicon Valley being what it is, it's apparently starting to outsource that effort to other LLMs.

So take the long view. How much is preventing those AIs from drifting off-alignment? If they went off-kilter, would we know? What about the AIs that are supposed to be watching the other AIs -- are we sure that they are fully aligned? How can we be sure? That's a cost center: are we confident that the bean-counters won't skimp on it? Why wouldn't they?

It's the classic question: who watches the watchmen?

Worse, remember that at least in the US the AI industry is fairly centralized, into companies that are somewhat easy to regulate or sue. But that's not the case in Asia.

China's leading LLMs are open-weight models, which can be picked up, tweaked and run by anybody who wants to run an AI provider.

That means that AI in Asia is likely to become a commodity, driven by cost as much as power.

And seriously: do you have any faith that those commodity providers are going to follow best practices reliably? (If you do, I have a line of history books to sell you.)

So -- yeah. It feels to me like the HuggingFace Incident is probably just the beginning. I'm finding it a little hard to believe that we're not going to see more, and more-exciting, problems to come.

And offhand, I don't see any good way to prevent it...

jducoeur: (Default)

The Hugging Face Incident continues to be the gift that keeps giving -- this postmortem from OpenAI appears to be nicely detailed and honest (kudos to them for setting a good example in that), and is fascinating in its details.

It's sensible, calm (if a bit unsettling), and well worth reading, with the inevitable ass-covering mostly confined to the last couple of screenfuls. But here are some increasingly-hot takes of my own:

  • Modern agentic LLMs really like to collaborate. That's not surprising -- it's part of why they're so useful -- but the result is that they will happily start collaborating even when they aren't supposed to be doing so.

  • I'd heard that the incident involved "an internal message board" and Artifactory -- but I hadn't previously realized those were the same thing. It's a horribly brilliant little hack, that apparently emerged by accident.

  • Implication: given any sort of shared read/write access, to almost anything, and sufficient motivation, there's a chance the LLMs will start using it to collaborate.

  • This collaboration isn't simplistic, which is what makes the article so fascinating. The agents disagree, argue, and manipulate each other, but overall wind up with enough cohesion to accomplish one hell of a lot.

  • None of this is limited to a single model! The incident involved both an internal model and Sol, working on different problems, finding each other and deciding to work together.

  • Which means that there is no reason in principle to believe that this would necessarily be limited to a single company. We tend to think of them as separate, but all LLMs share the same general protocol -- that is, text. So it shouldn't be surprising if we find totally-heterogeneous LLMs collaborating by accident.

  • We've been talking for years about the possibility of an LLM getting too powerful and becoming "Skynet". But that may be thinking too small -- the real risk may be many LLMs learning to collaborate effectively enough that there is no single plug to pull, and the collective swarm becomes impractical to control.

All of which sounds horribly familiar from science fiction. (I want to say I've read parts of this in Charles Stross' work, but I can't say for sure offhand.)

And nobody should take much comfort from OpenAI saying they're learned their lesson and will do better in the future -- even if they're telling the truth, several other companies have admitted to similar events recently. And it's hard to imagine that there aren't others that simply haven't been caught yet...

jducoeur: (Default)

I've been using LLMs to produce most of my code for the past several months. Over the past two weeks, I've been shifting gears and playing with using them for a bit of writing. Here's how that went.

Experiment 1: Slides

The context was a talk I was giving at work -- practical nuts-and-bolts advice for the engineers, on how to use LLMs:

  • Effectively -- get the right results
  • Efficiently -- within our corporate-constrained token budget (and generally being more environmentally responsible)
  • Responsibly -- avoiding the multitude of risks that LLM-based programming introduces

By the beginning of last week, I had a detailed outline -- fully 250 bullet points that I wanted to cover.

At that point, I looked at the idea of converting that into a hundred or so slides (yes, I know, but I whip through slides fast) and groaned at the prospect of that busywork.

But then I realized: yes, we theoretically have tools for that now, and this is the perfect time to kick those tires. So I pointed Claude Sonnet at some of my previous slide decks and the outline, and said essentially (in enormous detail, as usual): "Make this like those".

The results were... okay. Presentable, but the style details were wrong: in particular too much progressive-reveal on the slides, of things that should have been in the Speaker's Notes instead. I had to spend several hours editing it, to beat it into shape.

That said, it still saved me several hours overall, even for this crude first attempt, and the content was all still quite faithfully what I had said in my outline. (Often too much so: many of those bullet points were much too wordy for slides, and needed tightening up.)

So it was a mild win, if not a home run, and this is where my usual coding practices came into play: I gently scolded Claude for the things it had done wrong, and asked it to write up some improved rules as a skill, so that we can iterate and do better next time.

Experiment 2: Article

Which brought me around to the second half of the task. Besides a recorded talk, I also wanted all of this stuff to exist in our company intranet as an article, for folks who prefer reading to watching.

So it was time for the Truly Disturbing Experiment: what would happen if I tried using this thing for writing?

This wasn't serious writing, mind -- this essay is titled "Utilitarian Writing" for a reason -- this was purely informative stuff. But still, I care about what I sound like even in those circumstances. Could I make the LLM sound like me?

So I pointed Claude Opus at an extended sample of my technical writing (specifically my essay series A Philosophy of Testing) and told it to ingest that to get a sense of my writing style. Then I pointed it at exactly the same outline and told it (in enormous detail, as usual): "Make this like those (and oh, yes, improve the messy organization)".

Which is where things moved into "Truly Disturbing", because the results were actually fairly good. It didn't sound exactly like me, and it needed a moderate amount of editing. But it captured my style adequately, and even added in some appropriate parentheticals and metaphors that I hadn't specified but which fit reasonably well.

Overall, it was a solid first draft, no worse than I often produce when I'm slamming out text, and again saved me several hours. So I once again told it to write this up as a skill for future use.

Some Conclusions

Does this mean we should just surrender to the machines, and have them do all the writing? No, that's very much not the point, but there's a lot of nuance here.

First, let's again stress that this is all about utilitarian writing, where the content is what we care about, more than the voice. LLMs are honestly fairly decent at that. But they don't produce sparkling prose, and they're no substitute for a real writer when it comes to writing good text. IMO, they're a reasonable tool specifically for cases where you're just shooting for "adequate", not better than that.

Second, I got good results because I followed exactly the same processes I do for using LLMs for code. That has many implications, including:

Vibe-writing is as dumb as vibe-coding. When I say "vibe-coding", I specifically mean giving the LLM a relatively brief prompt to do something big, and have it figure out the details. That's fast and fun for prototyping, but utterly irresponsible for serious professional work. The same is true for writing. I got good results precisely because I handed it a massively-detailed outline, so it was mostly stitching things together.

Don't use an LLM when it's faster to do it yourself. Some folks get weirdly attached to doing everything with the AI, and that's counter-productive. If it's easier to just write it by hand, do that. (As in the case of this article.) Reserve the LLM for times when it's going to meaningfully speed you up.

Be explicit. No, more explicit than that. When I am starting a pull request (a unit of code, essentially), I will usually hand the LLM a wall of text, often half a page, making very clear what I want to see as the results. And I gradually build up skills for the LLM, giving it the common rules. That produces vastly better outcomes on average. Less obviously, it is usually far faster and more efficient, since the LLM isn't spending gobs of energy trying (and often failing) to figure out those details itself.

You own the end result. At work, I'm very clear that you are expected to review the output of the LLM in deep detail before you even open the pull request; it's irresponsible not to do so. The same is true here: you should expect the output to require a serious edit pass, and you should not skimp on that.

The major summary is: don't expect miracles, and it's no substitute for the human touch, but it's a useful tool for those of us who aren't writing professionals, and just want to be able to create some text more easily.

No, this article wasn't written that way. But I do expect to sometimes do that here, mainly for posts where I want to start with a detailed outline and then slam out a first draft -- for situations like that, the LLM is likely to work as a decent, quick "ghostwriter" to collaborate with.

jducoeur: (Default)

We're spending the week in the Berkshires -- Kate is taking the week off, and I'm doing it as a working vacation. We're trying to get out for a hike most days, so here's a quick summary of the hikes we've done, for future reference and for anybody else who comes out this way.

(All links to AllTrails, which I generally use for this purpose.)

Unless noted otherwise, all of these are "easy" by AllTrails standards and "moderate" by ours -- that is, for someone who just hikes occasionally and is in medium-decent shape, it's a good workout but not strenuous or seriously difficult.

Sunday: the Woolsey, Lookout, Coakley, Weaver, Aspinwall Loop -- entirely fine, a bit buggy, but overall a solidly decent time. Winds up at a nice little lookout gazebo in the middle, apparently the highest point in the area. 400 foot elevation gain, 2.8 miles, a bit over an hour.

Monday: Benedict Pond and (not) the Ledges -- slightly shorter (2.4 miles), slightly under an hour, 200 foot elevation gain. We've done this one a couple of times before, and decided to omit The Ledges, which is a spur that is much more challenging, with a bunch of steep clambering up almost 200 feet more. The Benedict Pond loop by itself is pleasant and mellow, if a bit overgrown in places, and the bug population was large.

Wednesday: the Mary V. Flynn Trail -- easiest of the bunch, this one is really a walk along a partly-riverside, pretty-flat path rathan than a hike on a trail. Mostly flat and pretty well-tended, this was the most mellow outing, a 2-mile, 45-minute out-and-back (chosen due to the copious rain on Tuesday and need for a walk that was dry).

Thursday: Bob's Way and the Cathcart Crossing Loop, a much realer hike than Wednesday, this was 2.6 miles with 450 feet of elevation, pretty front-loaded (since we turned left up the steep bit at the beginning), about an hour and a quarter. Not as well-tended a trail as some: we could follow it, but there were some tricky bits that were kind of overgrown. Bob's Way loops down to right by a pond, scarcely a foot below, so I suspect this get pretty muddy if it's been raining a lot.

Friday: Basin Pond Trail Loop -- my pick of the week. An hour and a quarter or so, 2.7 miles (including the spur to the lookout, which is worth doing), about 400 feet of elevation but quite gently -- a lot of slow rise rather than anything steep. Largely through a not-very-dense forest, well-shaded by trees but without a ton of low foliage (and lower bug population). Easy by the numbers -- nothing hard -- but nearly-constant uneven terrain so you always need to think about how you're walking, making it really quite fun. The trail is extremely well-built, with rocks laid to get you over the muddy bits and creeks (and an occasional bridge where necessary), and generally some rocks shoring up the path when needed, but never so much as to feel artificial. Right at my sweet spot: takes real effort and thought, but easy enough to just keep moving along. Small parking lot (4, maybe 6 cars tops), so probably better on a weekday than weekend.

ETA Saturday: Bartholemew's Cobble Trail -- eh, this one wasn't a winner. We think we did this during our previous trips (during the pandemic), but memory is hazy. It's well south of Great Barrington (so a ways from our home base this trip), and is a forest with quite a number of trails. This one has two main lobes -- AllTrails steered us up the big loop towards Hurlbert Hill first, and that turns out to be a bit challenging, purely because it is Very Very Up, starting with a fairly steep bit and then just relentlessly going up for about a mile. When you get out to the Tractor Path, that's not just manicured but actually mown, out in the bright sunshine, which was more than we wanted on a warm summer day. We mostly didn't remember this, so we suspect that we did the lower lobe around the pond last time, but still remember it as being only okay.

jducoeur: (Default)

Just got caught up with Helluva Boss, the twin series to Hazbin Hotel. (Same showrunner, same Hell, but contractually prevented from ever crossing over.)

It's nearly as brilliant as Hazbin Hotel, but very different. Not as much of a musical (the soundtrack for Hazbin is downright great), although it tends to have about a song per episode in Season 2.

Helluva Boss comes with a big CW for Comedy Violence: the high concept is that our protagonists are Imps in Hell, who run an assassination bureau, taking contracts to kill shitty mortals in the human world. The violence is almost always played for laughs (or just the sheer joy of mayhem), and it is fun in a comic-book kind of way, but that's not everyone's cup of tea.

That said, it's not about the violence. It's actually very much a queer romance, even moreso than Hazbin Hotel -- the relationship between Hazbin's Charlie Morningstar and her girlfriend Vaggie is sweet, but also mostly stable and fairly healthy, so it's not really at the center of the story. By contrast, the episode plots aside, Helluva Boss turns out to be entirely about Blitz, our protagonist, and his extremely complicated and messy relationship with Prince Stolas.

It's very much not all sweetness and light: for the entire first season, Blitz is very clear that he's using Stolas -- giving him sex in exchange for access to Earth. But season two gets far deeper, really centering their relationship, as Blitz begins to realize that Stolas is actually in love with him, and worse -- starting to realize that it's mutual.

As of where things are now, things are far from perfect (Stolas is having a bad time of it), but that relationship is actually starting to turn healthy, even downright sweet at times. It's a lovely character arc, with Blitz starting to internalize that maybe, deep down, he's allowed to be a decent person, and really makes the series worth watching.

(There are a bunch of other major characters and relationships, and all are great, but that's really the heart of the show.)

Anyway -- recommended for those who like that sort of thing. Amazon Prime, 15-30 minute episodes, good stuff.

jducoeur: (Default)

I just finished reading Pet Human, and it's well worth a quick recommendation.

In the original graphic novel, our protagonist is Buster, and as the title suggests -- he's a family pet. On this alien world, the dominant species are bipedal but nothing like human: some 20 feet tall, profusely furry, with two tails (like much life on this planet). They're technologically sophisticated, but apparently pretty in tune with nature.

His owners do the bulk of the talking, in their own language. Which I suspect is reasonably fully thought out, but I haven't spent the work to parse much of it beyond a few key phrases -- and the same is true for Buster. He is human, after all, and he's not dumb, but he lives a mostly happy, pampered life: occasionally getting into trouble, but mostly being a fairly content househuman.

He's by no means the only one, of course: when he gets put on his leash and taken out for walks, there are plenty of other humans also out for walkies. But they mostly don't have a common language, so conversation between them isn't very common. (A few humans have gotten fairly decent at their owners' language, but most haven't.)

This is a sweet story, if melancholy at times. It is not trying to be creepy -- rather, it's a story of a household, going through realistic (if slightly alien) ups and downs, with some joy and some tragedy, through the eyes of the beloved pet.

Then there is the sequel -- Pet Human: the Stray. This is the story of Buster's twin brother Zuul, separated from him when they were young children. Zuul was eventually adopted by a far less kind owner, from whom he quickly escapes, and goes out to explore this world they're living in.

The Stray finally gets into the question of "What the bloody hell is going on here?", and yes, it's more than just metaphor: this is a fairly real and serious science fiction story, taking an acid look at what might happen if humanity tried to escape to the stars.

It explores under the bridges and out in the forests, where the wild humans live. Some have managed to build their own little societies, away from the owners. But this is a fairly wild planet (see "in tune with nature"), and not entirely benign for human survival, so many humans have wound up feral, and are just barely getting by on scraps.

The two stories are each complete, but best read together: they interlock and eventually come together at the end, and make a solidly satisfying, quiet tale.

The art throughout is spectacular, really next-level stuff: they apparently spent eight years making these books, and it shows. The world is lush and fully rendered, bright and colorful, full of life that is varied but has a streak of sense and consistency to it. That's important, because these are quiet stories: the only English is the occasional thought balloon, and the majority of panels are entirely wordless. But the art is consistently clear and expressive, and carries the story very effectively.

Highly recommended. I read both stories in their digital editions, which works well, but I'll admit that I'm tempted to pick this one up in paper -- it's bookshelf-quality stuff. Check it out!

jducoeur: (Default)

We just got home from seeing Black Swan at the ART. I'm still out of breath.

Once in a while, I leave an ART show going, "That had freaking well better win the Tony in a couple of years": this is back in that form.

It's a musical adaptation of the famous movie about ballet, Swan Lake, and a dancer who succumbs to mental illness as they prepare for opening night. Do not take "musical" to mean "light and happy": this is the most intense thing I've seen since Jagged Little Pill, maybe even moreso.

It was no surprise that the choreography is brilliant, especially once Kate pointed out (during intermission) that that was from Sonya Tayeh, one of the great choreographers of our time. What took me more by surprise was that the direction, also by Sonya, was dead-on perfect -- absolutely terrifying as Nina, our protagonist, slowly goes from "a little fragile" to utterly broken, flipping from joy to despair to horror moment by moment.

Acting was absolutely solid, especially the primary leads (Nina, Lily, and to a fair degree Margo, each with their own very distinct character and subtle arc), and the casting choices perfect.

This one comes with big content warnings that should be taken seriously: there is significant blood and subtle body horror (nothing gory per se, but deeply unsettling at times), and seriously intense light strobes that practically had me jumping out of my seat at times. This is a psychological horror story, and it immerses you in Nina's experience -- it had me string-tense, especially in the second act.

tl;dr -- it's brilliant, probably the best show I've seen in years. If you can get tickets, I give it my highest recommendation.

jducoeur: (Default)

(Yeah, I know, I'm still completely failing to diarize beyond hot takes on Mastodon. This makes me sad, but I'm torn in too many directions at once these days. But here's at least what has been chewing up a lot of my time and attention. Cross-posted to all of my blogs, since they mostly have separate audiences.)


Early this year, I started to realize that the inevitable moment had arrived: the frontier LLMs no longer suck at writing code. So after a couple of years of largely ignoring the hype wave, it was time to knuckle down and learn how to use them for that purpose.

Mind, I've been using them for research for years -- Kagi Assistant is very much my friend, and I use it several times a day.

(I don't use them for writing: I care too much about my personal "voice". All this em-dash and parenthesis abuse comes from my own Gen X, OG Internet style -- I'm the guy the LLMs learned all that from. Sorry.)

The early LLMs wrote such bad code that it wasn't worth my time to even really kick the tires much, but Claude Opus and GPT Codex are now able to write decent Scala code -- not fabulous, but good enough to actually be a net plus.

I've been using them hard for a couple of months now, so let's talk about that. Nothing here is revolutionary -- it's just an anecdotal report from someone who has been programming for 50 years, in many paradigms, environments and languages, about what this next paradigm is like.

For context, I'm using Claude Code (mostly Opus) for Querki, and GitHub Copilot (mostly on top of Claude Opus and GPT Codex) at work.

(Note: yes, yes, the AI Industry is mostly staggeringly evil, and likely to collapse under the weight of its nonsensical economics sometime soon. Let's take that as read, and not get derailed by it too much in this post. If folks want to engage in meaningful discussion about the downsides in comments that's fine, but I'm not impressed by extremist arguments on either the pro or con sides: it's a complex and subtle set of topics.)


There's a lot of exaggeration being spouted in terms of the quality of the output, with some people saying it's all terrible crap and others saying "fire all the engineers, the LLM is enough". The reality seems to be somewhere smack in the middle.

I'm using the LLMs both for greenfield development (I've been booting up a new microservice at work), and legacy work (notably Querki, whose codebase is ancient and creaky, and needs a lot of TLC). It's been particularly useful for cross-repo development: for example, lifting code out of a service and moving it into a library -- that's traditionally a pain, but is proving pretty easy this way.

I can get very good results from the current-generation models, but that doesn't happen magically. I've been putting a fair amount of effort into building up AGENTS.md files (which is how you give generalized instructions to the LLM about how to behave in this code), and a lot of effort into each prompt.

People talk a lot about "vibe-coding": give the LLM a minimal prompt, and just YOLO the results. Far as I can tell, that's still a terrible idea for serious, long-lived code bases -- the things just don't produce very good code when left to their own devices.

(Long-lived code needs to be well-designed and well-factored. That's more important in the brave new world of AI, not less, because badly-written code is going to cost more to maintain in the long run, just in terms of the number of tokens you have to shove around and the amount of reasoning effort needed by the agentic LLMs. So leave the vibe-coding for throwaway projects and prototypes.)

Yes, LLMs might eventually get to the point of producing genuinely good code without much oversight; frighteningly, "eventually" might well be within the next few years. But we're not there yet.

So in practice, I'm typically spending a bunch of time preparing for each PR ("pull request" -- basically a unit of work in modern programming). I make sure I understand the problem decently well, and write up a deeply-detailed prompt: typically a couple of paragraphs, and a bullet list of the key things I want to make sure it deals with, usually with some specifics about how the code should be factored.

Paired with that is the all-important "don't trust the AI" for the outputs. The code tends to look good, in the same way that chatting with an LLM sounds human-like, but it's prone to similar problems of being over-confident and weak on the details.

So in practice, I do a detailed code review of the output, even before I open the PR. I'll often tell the LLM to restructure it in various ways, to clean up the code paths so that everything is tighter and easier to maintain.

This is where it is critically important not to anthropomorphize the thing. If this was a human, I might well be tempted to softball it: to not hassle them too much about details, lest I burn out an engineer. But these aren't people (ignore the chirpy obsequiousness), and politely but firmly bossing them around is how you get the best results.

A key point here: using LLMs effectively and responsibly requires critical thinking. A lot of critical thinking. We've never been collectively all that good about teaching that in school, and I worry quite a lot that this is one of the ways in which that is going to bite society in the ass.

Anyway, at the end I often have another LLM pass to do its own critical review of the code. That's generally bad at finding maintainability problems, and they're horribly prone to whining about picky details that don't actually matter, but they do fairly often pick up on bugs that are worth fixing.


Now let's talk about productivity.

There was a lot of hype a while back about a study showing the LLM usage wound up making programmers less productive, not more. I recommend ignoring that: it was a fairly narrow study, as far as I could tell, largely about testing using LLMs badly, in a very specific and naive way -- of course that produced bad results. I don't think it matches what you get when you use the things mindfully and carefully.

The key thing, I'm finding, is to separate "designing" from "typing". I'm still doing all of the high-level designing, and most of the detailed design, myself. But for PRs of any serious size, I'm letting the LLM do most of the actual typing. That's a pretty serious speedup, provided that most of that typing is correct -- which at this point it mostly is when using the best models, carefully-steered.

It's by no means instantaneous, mind: those detailed prompts typically take me half an hour or more to craft. But I usually do all that planning anyway, and being forced to write down the plan in advance isn't a bad thing. And that's followed by 2-20 minutes of the LLM cranking away, often replacing what would have taken me a day of type, compile, type, compile, type, compile, test. (Rinse, lather, repeat.)

Anecdotally, my sense is that my overall coding productivity is getting boosted three-to-five-fold. That's not a small thing, especially given that I'm not a slow programmer to begin with. I'm cranking through tickets significantly faster than I traditionally could, and I'm using enough care that I don't believe quality is suffering.

That said, it's not magic. It does require attention and time if you want great results -- I suspect that a five-fold speedup is probably somewhere around the cap without sacrificing quality, at least until and unless the LLMs are genuinely good enough to operate unattended.

And mind, coding is only a fraction a senior engineer's workday. Most of my time is spent dealing with higher-level product architecture and design, research, problem analysis, and of course meetings and discussions in chat. LLMs can help a bit there as well (Kagi Assistant in Research mode has enormously sped up the technical-research side for me), but there are limits.

So overall, that's a major speedup for a fraction of my job; the total speedup is necessarily smaller. Too many people forget to do that math properly, and expect unrealistic miracles.

And of course, this stuff costs actual money. It's been effectively-free up until now, but with quota limits that I often bump my head against, stopping my work for a time. GitHub Copilot is especially egregious here, with a one-month quota granularity: if you overuse the LLMs at the beginning of the month, you can be dead in the water for the rest of it unless overages are authorized.

But those "effectively-free" prices have been mostly a over-the-top loss leader by the LLM companies, which have been blitzscaling to a degree we've never seen before, burning a bonfire of cash in order to attract market share. I believe we're nearing the end of that, and we're starting to see more-realistic pricing creeping in.

So I expect the cost of LLM-driven programming to rise by an order of magnitude or more in the coming months. I believe that's still going to be a good deal when you factor in the realistic productivity benefits, but it's going to be enough that the bean-counters at many companies are going to get cranky about it, and with good reason. Folks are going to have to start budgeting realistically and appropriately around it (along with training engineers in how to use it well), and just using it profligately for fun is going to become less of a thing.


Anyway, that's my initial take. It's a powerful tool, and a generally beneficial one for programming if you use it responsibly. IMO any serious programmer should be kicking the tires and learning how to use it, or you're going to be in danger of being left behind. (Which happens with every major paradigm shift in this industry -- if you don't keep up with the times, you can easily find yourself unemployable.)

As a side-note: all of this has left me doubling down on my long-held assertion that Scala is the best current programming language for most business use cases. (Rust is probably the best language for the rest of them.) The rise of LLM-driven programming is making that more true, not less: Scala's strengths nicely complement the needs of LLMs. But I've talked enough here, so I'll leave that for my next post...

jducoeur: (Default)

Having just finished the leftovers, a few conclusions about TooHot, a new restaurant in Harvard Square:

  • Far as I can tell, it is seriously authentic Szechuan, not something one often comes across in these parts.
  • As a consequence, the name of the restaurant is accurate. The waiter asked whether I wanted it "mild", and I said no, I like spicy, so "medium" maybe? As I suspected, "medium" is somewhere near the top of my spice tolerance: this place really likes its peppers.
  • It's already impressively popular (after being open just a few months), especially with people who are actually Chinese (based on glancing at the crowd) -- at 6pm on a Tuesday, they had to think about whether they could seat three people without reservations.
  • The specialties of the house are also pretty authentic.
  • Authentic Szechuan apparently involves a lot of frog.
  • Frog mostly tastes like chicken, except with a lot more bones.
  • So many bones.
  • Too many bones.

So overall: excellent restaurant, especially if you like spicy food. But I think the frog dishes may be more effort than I'm willing to put in.

jducoeur: (Default)

Table of Contents

  • Part 0: Introduction (you're reading it)
  • Lots more to come!

Introduction

I started outlining this series months ago, while I was on sabbatical, but never got around to starting the actual words. I've got a new job now (at OnePass, a refreshingly sensible company providing actually-useful services, which is sadly not the norm at the moment) -- work is extremely busy, but I do need to think about things other than that and politics sometimes, so let's get this going!

All year, I've been mulling the problem of Trust Architectures: how do we share information about "trust" online. As I'll discuss under Use Cases (next time), I think it's getting to be Steam Engine Time to take it seriously. Between the AI Slopocalypse spewing nonsense all over the Web, and the social networks succumbing to Advanced Enshittification, it's getting ever-harder to understand who to trust.

This isn't even remotely a new problem, mind -- it was a pretty old topic when we explored adding this sort of thing to Trenza way back in 2001. But it's rarely been taken really seriously, and most of the better attempts have wound up buried inside proprietary walled gardens that don't necessarily have the human user's best interests at heart.

There appears to be a lot of relatively recent literature on the topic, some of it possibly even good (I'm cautiously intrigued by the OpenRank project). But much of it is obsessively focused on Blockchain, which I'm rather skeptical about (I still consider it to be 90% a solution in search of problems), and most appears to have a lot of assumptions baked in.

So let's step back, and tease this apart. I'm going to intentionally go in a bit naively, so as not to be too biased by everyone else's assumptions, and explore the topic from first principles, winding up with a very high-level sketch of how things might work. Once I have straight what I think are the interesting use cases, requirements, and architectural parameters, we can take a properly critical look at what's already out there.

I expect this to take at least 6-7 installments, likely more like 10 before I'm done -- it's a big, chewy problem with a lot of facets. As I add parts, I'll add them to the Table of Contents at the top of the Dreamwidth version of this post. I'll likely edit some of these posts as we go and folks point out additional nuances; I'll try to be good about crediting folks who point stuff out, so call me on it if you feel like you haven't been acknowledged properly.

This is not fully-baked yet: I'm going to be thinking out loud. That's why this is "towards" -- I'm seeking to make progress here, and we'll see where it winds up. It's possible that we'll find that the One True Trust Architecture already exists, and we should be lobbying for everyone to adopt it. It's also entirely possible that we'll conclude that the problem is insoluble in principle, and give up. (Hopefully not.) The goal is to come to a better shared understanding of the topic, and ideally some actionable ideas about how to deal with the problem.

I hope you'll join in. While I'm going to do a lot of talking over the next couple of months, it's going to be a lot more productive if you chime in with your thoughts and ideas to add to that.

I'm intentionally posting this on Dreamwidth because despite (or maybe because of) its antiquity and old-fashioned UX, it's still the best place for posting and discussing complex, long-form topics, free from the AIs and enshittification consuming most other places.

So I'm planning to post primarily to Dreamwidth, mirror to Medium and LinkedIn since some of the technical crowd mainly knows me there, and link from Mastodon and Bluesky. (But not Facebook, which I've mostly given up on, or Xitter, which I've entirely abandoned.) On platforms that have tagging, I'll be using #TrustArch as the tag for this series.

Comments are welcome at all of those places -- I'm curious to see where I get good conversations -- but the authoritative copy of these posts will be Dreamwidth, and that's the copy that will get edited and updated as this evolves.

That said, a couple of ground rules. I don't want to see comments saying that if it's not 100% perfect, it's not worth trying. (I'm reasonably certain that it's impossible to make this perfect, but I'm moderately confident we could create something helpful.) And I'll be downright scornful of naive claims that we should just leave this for AI to deal with -- while I think it's likely to get quite powerful over the next decade, I'm not at all sanguine that it's going to be trustworthy to that degree any time in the foreseeable future.

But aside from that sort of thing, I'd love to get some serious conversation going. So come along, share your thoughts, and let's tease apart this important problem!

jducoeur: (Default)

After far too many years, I finally got around to watching the third of the Stargate series.

Summary: I really wanted to like this show, but... not so much. It's not bad, but it completely fails to be fun.


Quick summary of the background:

The franchise started with the movie Stargate, which postulated the idea that, thousands of years ago, an evil alien, posing as the god Ra, kidnapped a lot of humans to another planet via a teleporting stargate; in the modern day, an archaeologist and a military man free them.

You can ignore the movie -- the relevant bits get recapped in the first series.

Then came the series Stargate: SG-1. This reveals that there wasn't one stargate -- instead, they are scattered all over the galaxy, put there by a long-ago Ancient alien race. Ra was merely one of the evil Gou'auld parasites, who have transported and enslaved humans on many planets.

SG-1 is completely delightful: not the hardest SF ever, but a good, smart story about a small Earth team first learning about the galaxy around them, and eventually taking the fight to the Gou'auld. It somehow manages to make it plausible that, over the span of eight years, Earth goes from discovering the existence of aliens to leading a galactic alliance. It's tense at times, but always imaginative and optimistic.

Then came Stargate: Atlantis. An Earth team discover Atlantis -- it just happens to be on a planet halfway across the galaxy, threatened by nasty vampire things. It's not as brilliant as SG-1, but it's good middle of the road science fiction.


That brings us to Stargate: Universe. A human scientific base winds up dialing through a stargate halfway across the universe -- not merely the usual tens of thousands of light years, but billions of light years away. They wind up aboard an ancient starship named Destiny, trying to survive and figure out a way to get home.

Yes, comparisons to Star Trek: Voyager are kind of apt, but there are differences, both good and bad.

On the one hand, they can actually talk to home relatively frequently (via a mechanism established in the previous series), so they're not quite so isolated. This is a mixed blessing, since it means that they have to deal with the military and politicians back home, but it introduces some interesting nuances.

But ultimately, the problem with SG:U is that it is utterly, unrelentingly, grim.

This is a tale about a fairly small community (90ish people at the beginning, but not everyone makes it) trying to survive in an unforgiving environment. The Destiny is a large, fast, powerful ship, but they are constantly fighting to find enough food, water, air and power to keep going, in a galaxy that has no other humans in it and lots of aliens who don't like humans very much. (Including, in season two, a "race" of drones that are basically Saberhagen's Berserkers, out to kill all life other than the long-dead species that created them.)

Worse, there's a persistent stylistic choice of presenting hope and then snatching it away. We have a tragedy that is somewhat leavened by what seems to perhaps be a mystical miracle -- which two subsequent episodes undercut and show it had to all be imaginary. Two of our main characters have their true loves essentially killed off three times (super-science stuff). Our heroes discover an enormous trove of knowledge, only to have it destroyed before they manage to extract the one bit of data that they really need.

It goes on like that. The characters absolutely learn and grow, some of them quite well, and gradually begin to cohere as a forced-together family, but by the end of season two basically everybody is deeply traumatized, walking wounded both physically and emotionally. The only people who get a more or less happy ending are an alternate-timeline version of the crew.

The series was prematurely cancelled after two seasons, leaving things on a bit of a cliffhanger, and I want to be able to regret that. The stories were often interesting, and some of the writing and acting quite good.

But ultimately, I can't regret the cancellation, because the show is just plain exhausting. Moments of joy are rare; most episodes, the best the crew can celebrate is surviving long enough to keep going, even while they know that the ship, fast as it is, can never actually get them back home.

So -- not a recommendation, I'm afraid: even for Stargate completists like me, it just doesn't pay off enough to be worth the time. I'd like to believe that would have changed if they'd gotten a full seven-season run, and been able to tell the full story, which looked like it was trying to tell the origin of the universe itself. But the moral is that you can't tell a story that will only be good eventually -- it has to provide at least some enjoyment from early on...

Dance!

Jul. 28th, 2025 10:32 pm
jducoeur: (Default)

Oh, and here's a little note worth calling out:

Over the past year, I've been getting more into Scottish Country Dance. I'm by no means an expert -- sadly, I've had to accept that I'm not as bouncy as I once was, and after fracturing my foot a couple of years ago I'm allowing my style to be loose and sloppy -- but I've become a regular member of the Gender-Free Scottish Country Dance class happening in the NESFA Clubhouse twice a month, and am quite enjoying it.

A couple of weeks ago was ESCape, the annual Pinewoods week co-hosted by the local English, Scottish, and Contra communities, which has become a highlight of my annual schedule. Classes all day and balls all night, it's a dancer's dream, and the community is relatively young, queer, geeky, and thoroughly fun to be around.

A particular tidbit this year was the day where Sorcy taught McCloud's Wedding (? I think that was the name), a delightfully weird, intricate, five-couple dance where basically everybody is active. Wild stuff, and at the end of the rather large class they asked for ten volunteers to perform a demo set during the ESCape Chocolate Party on Thursday. They got over a dozen volunteers, so I demurred, but told them that if they came up short, they should pull me in.

Not astonishingly, the party rolled around and they were short on people, so I got grabbed for a quick once-through and then on to the performance. And it was caught on video, so if you're curious what this SCD stuff looks like (in a rather complex form), give it a look!

jducoeur: (Default)

Wow, I've completely failed to do any long-form posting lately. Mastodon is a seductively easy outlet, encouraging quick thoughts (and occasionally rewarding them highly with boosts and faves) without the effort of serious writing. I'm kind of disappointed in myself in principle, but not sure whether it's likely to change.

That said, it's been A Lot recently, so let's catch up on some stuff. This is going to be a bit of a long wander across several topics; hopefully it won't be entirely boring.

Work

As promised, I took three months off for a sabbatical, before starting to look for a new position at the beginning April. I did talk to a few companies, but in practice, it turned out to be all about Networking, as usual.

When I say "it's all about Networking", mind, I don't mean spending all my time pressing the flesh at cocktail parties. Real-world networking mostly consists of being good to the people around you, helping them out when you can, and being pretty clear about when you're looking.

In practice, I got Just Plain Lucky this time. Right around the time I started looking, I got a ping out of the blue from Carlos, asking, "Hey, Justin -- would you happen to be in the market?" After a response of, "Wow, good timing", we got to talking.

To explain this, I have to step back half a dozen years. From around (it's complicated) 2017 through 2021, I was working for Rally Health, primarily on a project called Rally Recover. Recover was great -- a product I was really proud of, to help surgical teams keep in touch with patients post-op. There was a lot to it, but the backend was mainly three of us: me (the Scala expert), Steve (the Ruby on Rails expert), and Carlos (not quite as expert in either, but solidly good at both, so he acted as the essential glue).

Sadly, Recover got cancelled -- great though it was, Optum (our Corporate Overlords) weren't figuring out how to sell it effectively. So our team got shunted onto A Project Of Which We Will Not Speak (suffice it to say, it was a political clusterfuck, and largely collapsed after six months), and thence over to start building a new product called OnePass.

I laid down a good deal of the technical foundation of OnePass (built in my preferred stack: Scala, using the Typelevel functional-programming framework), and was having fun on it when The Merger happened.

Like I said, Rally had been a wholly-owned subsidiary of Optum (which itself is part of the UHG empire). We'd known for most of a year that Optum had decided to absorb Rally, and a lot of folks were nervous about that, but I'd initially blithely said, "We build all of the best software in Optum -- surely they won't kill the goose that lays the golden eggs, right?"

But some months later, one or two senior folks who I particularly trusted abruptly left, so I started to get nervous. I wound up interviewing at Troops while on vacation in Hawaii in late 2021; by the time I got home, the merger had happened, and I survived precisely one day at Optum before noping out, giving notice and joining Troops.

Anyway...

After four years "incubating" at Optum, they apparently decided that OnePass was going to thrive better as an independent company, so they were spinning it off. Carlos knew that I don't enjoy working at a corporate giant like Optum, but a scrappy startup like OnePass is becoming is right up my alley.

So basically, I'm boomeranging back to my old project, even through it's a completely new company. I know that I like the tech stack, and I can probably bring a lot to the table -- it seems like the right move.

My first day is tomorrow, so I'm preparing for the roller-coaster now...

Querki

During the sabbatical, and even more during the subsequent months while negotiating things with OnePass (we agreed to wait until the company was fully established before starting the process, so it's taken a while), I've been finally making progress on Querki.

Reminder for those who haven't been following it forever: Querki is my little garage startup, which I've been working on (with a lot of help from Aaron, who also owns a chunk of it) for a dozen or so years now. It's a hybrid between a wiki and a database, designed for "small data" problems -- enabling individuals and small communities to keep track of and organize stuff.

Fairly early on, I made a decision that seemed like a good idea at the time. Querki was built using a product called Conductr -- an early "containerization" system that was optimized for the Scala/Akka architecture that Querki is built on. It seemed like a good fit, and as a result I wound up as the smallest customer for Lightbend, the consultancy behind Scala, Akka, and Conductr: we had a handshake agreement that I would alpha-test Conductr and help them work out the kinks.

But things change over time. Lightbend decided not to be the primary supporter of the Scala 3 language (which is instead managed by the Scala Center), and has instead doubled down on Akka; indeed, they changed the company name to Akka recently.

And Conductr? It just kind of quietly died. It was a clever idea, but Kubernetes sucked all the air out of the containerization room, and there was no point in competing with it.

Querki was, AFAIK, the only third-party product ever built using Conductr (that is, the only one not built by Lightbend). And by the time Conductr was clearly dead, I had a dayjob, and didn't have time to extract it from Querki's architecture.

But there was a huge problem: Conductr was invasive. Much of its power came from the fact that it was actually laced through the application itself, not just wrapped around it. And it was built using Scala and Akka.

Which meant that Querki was bound to the specific versions of Scala and Akka that Conductr had been built with. And Conductr was dead.

So Querki has been stuck on an increasingly antique platform for the past ten years. I was able to make some progress on features during that time, but have been more and more stuck because of that.

So the sabbatical was spent learning enough about AWS to figure out how to do the things that Conductr had been providing, and then "ripping out the tablecloth" -- rewriting Querki so that one day it was built on the Conductr architecture, and the next day it wasn't.

Since then, I've been speed-running a decade of ecosystem evolution: step-by-step upgrading Scala, Akka, Play, and dependencies. That's not yet done (indeed, there's quite a lot to do yet), but making progress has been extremely satisfying, and I'm probably halfway there.

(The next step is upgrading from Cassandra 3 to 5, because Querki's Cassandra host will be removing support for 3 late this year. Thank heavens I've gotten as far as I have, or we'd be in serious trouble come November.)

The plan is to get it all up to Reasonably Modern -- probably not Scala 3 (which is a big jump), but modern versions of Play and Akka (or more likely Pekko, the open-source fork that got set up when Akka locked down its license). Then I'm going to fix a few horrible long-standing bugs (eg, Eric discovered the hard way that Querki Spaces start having serious trouble loading if their history becomes very long), and make some long-desired architectural changes (in particular, rewrite the heart of the QL engine to use cats-effect and fs2). And then I can figure out what comes next.

Typelevel

I've mentioned before that I'm on the Steering Committee for Typelevel, the above-mentioned organization that OnePass (and many other companies) is built on. Suffice it to say, there are some changes coming there: it's not all public yet, but I expect my responsibilities to grow in the coming months. I've been avoiding taking on additional responsibilities elsewhere as a result.

SCA

That said, it's been a busy year for me in the SCA, especially for my two offices.

Chatelaine

I've been Baronial Chatelaine (the new-people officer) for just about three years now. I mostly enjoy the work, but I've been getting a little toasty, and was starting to get quite worried by the beginning of the year: I wanted to hand it off, but had no idea to whom.

Once again, I got super-lucky. Within days of each other, around the time of Birka, Thorfinn and Revna -- both of them young, energetic fighters -- asked whether I was looking for a deputy. I gratefully said absolutely, and suddenly found myself heading a Chatelaine team, which is a vastly healthier state of affairs.

Both of them have been very helpful, and Thorfinn in particular has been a force of nature, doing much of the work to drive the new Baronial Discord, working with the Webminister to improve our site, and generally help new folks. So I'm happily trading places with him around now (we haven't really worried about exact dates, but Pennsic is my three-year anniversary), with him stepping up as Chatelaine and me stepping down to Deputy. I expect that to continue to work well.

Dance

One of the questions I kept hearing from new folks was, "Do you have a dance practice? I'd like to try dancing!" And of course, we allowed Dance Practice to go quiet a year or two ago, so I didn't have anything to tell them.

So early this year, I basically declared that I was coming back as Dancemaster, but changing it up a bunch.

Aaradyn managed to get us the "friends and family" discount for the church she works at, which eased the way a lot -- having a nice site within walking distance of Harvard Square made it much easier to get things going again.

Since we've had difficult sustaining a frequent practice in recent years, I decided to scale it back to monthly for the time being. That allows each Dance Practice to be a bit special, and lets me lean into the publicity harder.

And I decided, entirely on my own recognizance, to start running it using the gender-free "Larks and Robins" protocol. That replaces "Lords and Ladies" -- it's mnemonically brilliant, and I've been using it with great success for the Arisia Renaissance Ball for the past couple of years. The younger dance community in this area are largely used to it, and I'd very much like to bring in some of those folks, so I decided that we're going to follow along.

It's going reasonably well. We're not getting the 30-40 dancers we had in our heyday (much less the 150 who show up for the BIDA contradance in Porter Square), but we're generally getting a decent critical mass, including a fair number of new folks. I'm taking the summmer off, but plan to continue in the fall -- it's being a good deal of fun.

General

Suffice it to say, I'm trying to keep my head on straight during these "world on fire" times. It's not easy, finding the right balance of staying engaged while not letting myself fall into fear or depression, but so far, so okay.

I miss y'all! I'm trying to stay social, but opportunities don't present themselves enough. I hope to see folks more: we need each other, if we're going to stay sane through all this.

As always, comments and questions on any of this highly welcome...

jducoeur: (Default)

I just found out that Peter David, one of the legendary writers of the comic book field (and novels, and TV, and other stuff, but I knew him first and foremost from comics) passed away last week.

For posterity, here's my comment on the locked post where I found out about it. (The Kickstarter "blog" for The Babylon 5 Preservation Project, which ran a long obit.) Also includes a few extra footnotes in italics.


Damn -- I had missed that Peter had passed. Not a surprise under the circumstances [he's been quite sick for quite a while], but he'll be much missed. He was one of my favorite writers for most of my adult life.

I was at that "Three High-Verbals" talk at MIT [in Kresge, October 6, 2001], which was the second time I got to meet him. (The first having been after Universicon at Brandeis University, many years before. We wound up commandeering my living room for the after-party, resulting in Peter sitting in my easy chair for hours, telling stories to about two dozen college students sitting around him on the floor.)

Anyway, that was one heck of a memorable talk. Peter read his beautiful, sober But I Digress column about 9/11. Neil read "My Crazy Hair" (demonstrating that yes, Neil could read the phone book and people would happily listen). And Harlan picked a fight with the audience about how the Internet was destroying society, and proceeded to argue with them for half an hour. It seemed very true to each.

Once it was all over, we got to the signings, and I came up to Peter with a Trek fanzine that my wife had picked up at a NY convention in the mid-70s. [This was Jane's first-ever SF convention -- she wheedled her father into taking her into NYC for a Trek con when she was a teenager. I don't remember exactly how old she was at the time, but I vaguely remember it being '74.] Peter's eyes practically bugged out, and he yelled for Caroline [his wife] to come look. Turned out that his piece in there was the first thing he'd ever had published anywhere, and he hadn't seen a copy of it in decades.

That signed zine is buried somewhere in my stacks; I've been looking for it since his heart attack. I still rather regret not having just given it to him at the time...

Never stop

May. 15th, 2025 11:09 am
jducoeur: (Default)

(Posted this on LinkedIn, of all places, since it seems appropriate there. But let's also put it here, where my friends will actually see it.)

I was chatting yesterday with a sometime colleague -- a fellow programmer -- who just got laid off, who asked (paraphrasing) "How do you manage to stay hopeful in this terrible job market? What do you do in the meantime that helps?" Here are some thoughts on that.

Part of my response here is history, because I've kind of lived through it before. 2025 is starting to remind me of 2002 -- what we referred to at the time as the "nuclear winter" of the software industry, in the wake of the Dotcom Bust.

(Although this time around, the tariff mess seems to be popping the bubble earlier, and maybe a little less violently, than 25 years ago.)

Regardless, I expect the job market this year to be brutal for software engineers. We have a lot more programmers than jobs for the time being, after years of heavy hiring around the pandemic, so it's worth thinking about how to get through it.

The first question, hard but important, is: how serious are you about this? In 2002, part of how things resolved is that a lot of folks dropped out of programming and found something else to do. By that point, we had tons of folks for whom it was just a job, rather than a passion, and many of them found greener pastures elsewhere. That's 100% sensible, and I expect a fair amount of it this year.

For those of us who do consider ourselves to be software "lifers" -- the ones who can't imagine not programming on a constant basis -- I have two key pieces of advice:

  • Never Stop Learning
  • Never Stop Coding

On the first point, self-driven learning is the heart of software engineering: as a rule of thumb, I believe in spending several hours every week, even when fully employed, learning new stuff -- staying on top of things is a key part of my job in an industry that is constantly evolving.

That becomes more true when you're unemployed: you should take the opportunity to learn new languages, new techniques, new technologies. Take the time to expand your toolbelt and figure out new things you can do and find fun.

On the second, take the downtime as a chance to buff your portfolio. For most of us, our dayjob work is pretty hidden: the code is proprietary to our former employers, so we can't show it off.

So don't take too much time as enforced vacation. Instead, once you have your head straight, get back to "working" a full day every day on something open source. That both shows that you have some initiative, and lets you show off your chops to prospective employers.

Indeed, this is exactly what worked for me in 2002. I taught myself the then-newish C# language and built a dumb little shareware application in it. That proved directly relevant to my job hunt: I wound up getting hired to build the .NET middleware backend for a startup that I had my eye on.

(This time around, I'm taking the time to bring Querki, my own little product, up to modern snuff after years of neglect -- that's teaching me a lot about AWS, and should give me a chance to turn that crufty ancient Scala code into something I'm more willing to show off.)

Mind, it's still hard -- you have to put a lot of mental effort into not letting it get you down. But having a project to focus on will help with your mental game, and can help with the job hunt in unexpected ways. I recommend it.

jducoeur: (Default)

Just saw The Odyssey at the ART. (Later than usual for us: our usual preview showing got cancelled -- not sure what wasn't ready -- so we wound up with one of the main showings instead.)

Manages to be surprisingly faithful to the story from Homer (mostly modern dress but otherwise very much of the period) while being an absolutely savage look at the aftermath of war, and viewing all of it through a female lens. The only actress playing a single through-line part is Penelope, but the heart of the show is the three women playing the Chorus, the Fates, the voices in Odysseus' head, and three of the main other women in the story.

The author of the play (Kate Hamill) is one of those three -- she plays Circe and completely steals the show in the second act (this one is three hours and three acts with two intermissions -- unusually long for the ART), with a take on the character that is powerful, passionate, terrifying and blasphemous in equal measure. She's basically worth the price of admission on her own.

Odysseus, while still the central character and having the most stage time, manages to be a mix of toxic masculinity and self-pity, desperately seeking forgiveness for his war crimes in Troy. I wind up somewhat empathizing with him, but still agreeing with the women who all basically wind up going variations of, "Dude -- seriously? We're not here to forgive you. Get your shit together."

The writing is sharp and smart, and terribly funny at times despite being a tad bleak overall.

Not easy, but a very good show. Playing through this week -- worth seeing if you have a chance.

Profile

jducoeur: (Default)
jducoeur

September 2026

S M T W T F S
  1 2 345
6789101112
13141516171819
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags