github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 00b8f85a98e039eaaf2046ccb2bbc7e1ff07d60e https://github.com/dreamwidth/dreamwidth/commit/00b8f85a98e039eaaf2046ccb2bbc7e1ff07d60e Author: Mark Smith mark@dreamwidth.org Date: 2026-04-19 (Sun, 19 Apr 2026)

Changed paths: M app.psgi M bin/starman A cgi-bin/Plack/Middleware/DW/AccessLog.pm

Log Message:


Add JSON access log middleware for Grafana Loki

Replace Starman's default Apache Combined access log with a DW::AccessLog middleware that emits one JSON object per line to psgi.errors. Fields include method, path, status, bytes, duration_ms, host, remote_ip, and user_agent — all natively parseable by Loki's | json pipeline for dashboards.

Use --no-default-middleware to suppress Plack's built-in AccessLog, and enable ContentLength explicitly in app.psgi to preserve that behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

(no subject)

Apr. 19th, 2026 08:26 am
skygiants: Na Yeo Kyeung from Capital Scandal punching Sun Woo Wan in the FACE (kdrama punch)
[personal profile] skygiants
I've been meaning for months to write up Knight Flower, the Joseon-era kdrama about a RESPECTABLE WIDOW BY DAY, VIGILANTE BY NIGHT who spends her days dutifully kneeling by her husband's portrait and serving her mother-in-law and her nights running around town in a black mask dispensing justice by the sword.

I enjoyed this drama very much, but it's kind of an odd beast -- it's genuinely interested in the awful constraints on Joseon's women's worlds and widow's worlds in particular and wants to explore that seriously, and it also wants have our heroine be extremely cool and fight off five guys in an alley every episode and toss off a one-liner about it, and it also wants our [middle-aged! widow!] heroine to be a charming sitcom naif who gets comically overcome by the sight of a man's midriff and is shocked! shocked! to learn about some of the various injustices going on in Joseon despite the fact that she's been wandering the streets dispensing vigilante justice for ten years. (They attempt to square some of this circle by virtue of the fact that our heroine's arranged husband was killed! by bandits! on his very wedding day! and so she has spent ten years dutifully mourning a man she never actually met, let alone slept with.)

And because Lee Hanee is a talented actress, she can almost more or less pull all of that off and make RESPECTABLE WIDOW SECRET VIGILANTE JO YEO-HWA a coherent character -- helped in large part by the various interesting women around her, including:

- Yeo-hwa's hard-nosed and cynical teenaged maid, whom Yeo-hwa rescued off the streets as a teenager, and who has spent her years since then in the single-minded pursuit of enough money for An Independent Place, which she is going to move into JUST as soon as her chaotic mistress to whom she is unfortunately absolutely loyal is Out Of This Fucking House and No Longer Doing This Stupid Vigilante Shit
- Yeo-hwa's mother-in-law, who holds Yeo-hwa harshly to the extremely narrow line of conduct allowed for widows [go nowhere; speak to no one; serve your husband's family; accept that it's an embarrassment for you to be alive when your husband is dead] and sees her largely as a walking reputational vector for the family -- but hey, at least she would never pressure Yeo-hwa to commit honorable suicide, like some other mother-in-laws-of-widows of their acquaintance, so that's something! In any other drama this character would be a cruel stereotype but in this drama she's played by Kim Mi-kyung with sympathy and complexity; she's the immediate bane of Yeo-hwa's life, and nonetheless she and Yeo-hwa have spent a decade bound together as family with a kind of affection, and Yeo-hwa understands perfectly well that her mother-in-law is also trapped by the only rules she knows
- Yeo-hwa's business partner and accomplice, a merchant whom Yeo-hwa also rescued on the streets and who has also spent the time since then like You Could Just Leave This Fucking House, I will prepare a fake identity for you, it won't be hard
- the main female villain, who is somewhat of a spoiler though this all starts to come out pretty early on )

Obviously Jo Yeo-hwa also has a love interest. He's an honorable baby cop who wants to fight corruption and also has a backstory tied up in the ten-years-ago political plot. He's completely fine. His older brother, an upright schemer who's been helping the virtuous king lay long-term plots to take back control from his evil ministers,* has an very cute B-plot bookstore romance with the cynical maid that I frankly found much more compelling in the glimpses of it that we got. More compelling yet is spoilers again! )

*there's nothing kdramas love more than a virtuous king who's trying to take back control from his evil ministers

Recent Reading: The Salt Grows Heavy

Apr. 18th, 2026 09:42 pm
rocky41_7: (Default)
[personal profile] rocky41_7 posting in [community profile] books

Today while waiting for my car’s brake pads to be replaced, I finish The Salt Grows Heavy by Cassandra Khaw. This is a short (fewer than 100 pages) fairy tale-inspired horror story about a mermaid and a plague doctor who get wrapped up in the sick games of a village they pass through.

I liked the idea of this story a lot more than the execution. Have you ever had the sense a book really wanted to say something profound about human nature? This book felt like that constantly. It also felt like the author desperately wanted the reader to be impressed with her large and esoteric vocabulary. Things were phrased and rephrased in ways that felt keenly like they were only there so the author could use a specific word. Which, fair, we’ve all done it, but the scaffolding showed so plainly here it felt very clumsy. I’m not usually one to fuss too much about purple prose, but the language here often felt decorative enough that meaning was obscured rather than clarified.

I like the vibes in this book, and the two main characters were engaging (although I felt like the half-mermaid children were a pretty glaring dropped thread) and the plot interesting, and some of the writing was beautiful, but more often it was distracting. I never sank into the book, which was too bad, because there were some cool moments.

Can’t say I’m inclined to look into more of Khaw’s writing, because I think her style is just not for me. I don’t think I wasted my time with this book, but I don’t need to see more from her.


(no subject)

Apr. 18th, 2026 06:44 pm
skygiants: a figure in white and a figure in red stand in a courtyard in front of a looming cathedral (cour des miracles)
[personal profile] skygiants
I have often read single-person biographies where the biographer is very obviously in love with their subject; I have also occasionally read have also read Couple Biographies where the biographer is really invested in the romance between their subjects plural. Ilyon Woo's Master Slave Husband Wife is a really great, thoughtful, thorough exploration of a particular moment in the history of American slavery around the passage of the Fugitive Slave Act of 1850 and the defiant abolitionist movement. It is also very definitively a love story that Woo believes in with her whole heart and is ready to champion all the way to the end, which I honestly think is quite charming even when I myself looking at the evidence was sometimes like "well, I too would like to believe that all through their many years together William and Ellen Craft were indeed fully and romantically on the same page and had each other's backs about everything, but I think it's possible there are other interpretations of some of these events and that in many cases we simply can't know for sure --"

The Big Headline about Ellen and William Craft, the story that made them famous and that the first part of this book recounts in detail, is their daring escape North from slavery in 1848: Ellen disguised herself as an extremely sickly white gentleman who needed her loyal slave with her at all times, and in this guise they managed to navigate 19th-century public transit all the way from Georgia to Philadelphia. They themselves wrote a book about this, which I do plan to read, because it sounds extremely cool and romantic and indeed everyone they met as they made their way from Philadelphia to Massachusetts was like "that's extremely cool and romantic!" and promptly pulled them onto the abolitionist lecture circuit to general wild applause. Ellen, in particular, had major abolitionist propaganda value for forcing empathy out of white people. She was often billed as the White Slave (a label that she did not enjoy.)

Being an escaped slave on the abolitionist lecture circuit was obviously pretty dangerous in 1848 but not as dangerous as it was about to become. In 1848, the Fugitive Slave Laws up north were pretty toothless and unenforceable. In 1850, in an attempt to staple the rapidly-fracturing country back together, significantly stronger laws were passed that essentially forced abolitionist states to cooperate with returning escaped slaves to their masters. Ellen and William Craft, who had so publicly escaped in a way that was very cool and also very embarrassing for the slave states through which they passed, inevitably became one of the first major test cases as to whether Massachusetts would indeed fulfill its Obligations to the South.

Woo writes a compelling narrative, but more importantly she does a really wonderful job balancing that narrative with the complexity of the broader context; from the opening chapter, where she ties the Craft's escape in 1848 with the 1848 revolutionary movement in Europe, I already knew I was in good hands. She does occasionally I think overuse the Ominous Foreshadowing Chapter Ending, but as nonfiction author sins go that's a minor one. She says that at one point in the text that as part of telling their full story she wants to complicate the idea of a happy ending, but it's very clear that in her heart she wants the Crafts to have been very in love and very married all throughout their long and interesting lives, and who can blame her for that?

Recent Reading: The Unworthy

Apr. 17th, 2026 08:30 pm
rocky41_7: (Default)
[personal profile] rocky41_7 posting in [community profile] books

Wednesday night I plowed through most of The Unworthy by Augustina Baztericca, translated from Spanish by Sarah Moses. This is a horror novel about a woman living in an isolated cult after climate change has ravaged most of the planet.

This was one of those books that had me going “okay just one more section and I’ll put it down” and then it was five sections later and I was still there. It just hooked me. I wanted to know more about the cult, I wanted to know more about the narrator’s past, I was so eager to see what was going to come next.

This book goes heavy on gore, mutilation, and cult abuse, so if those are not for you, you may want to give this one a pass. I found it fascinating; the world of the narrator is so grim and tightly controlled, but it’s all that’s left (as far as they know). The book also leans hard on things unspoken: things the narrator knows are so taboo she crosses them out of her own (secret) writings (such as when she wonders if maybe the earth has begun to heal); things she has forcefully blocked from her memory because they hurt so much to think of; the deep current of attraction she feels towards various other women in the cult which is easier to express through violence than sexuality.

In the claustrophobic world of the cult, it becomes so easy for the leadership to pit the women against each other, and they have grown shockingly cruel and violent towards one another in their quest for dominance (each of the “unworthy” dreams of ascending to the holier status of a “Chosen” or “Enlightened”). With virtually no control over their day-to-day, they fantasize about opportunities to punish each other, their only ability to enact their will on the world.

The hints from the beginning that the narrator questions her role in the cult create a delicious tension in the work. Her mere act of writing her experiences down is a violation of cult rules and she frequently keeps her journal pages bound to her chest under her clothes so no one will find them.

The translation was excellent, the writing flows well and Moses captures the descriptions and the narrator’s backtracking on her wording without anything becoming awkward.

The book isn’t long, but I was riveted, and I would like to read more of Baztericca’s work in the future. This was also the second Argentinian horror novel that surprised me with queerness, so another win for Argentinian horror.


(no subject)

Apr. 16th, 2026 07:59 pm
skygiants: Mary Lennox from the Secret Garden opening the garden door (garden)
[personal profile] skygiants
As I mentioned on my last Pern post, Dragonsdawn was always the most memorable Pern book for me -- for my sins, and sins indeed they are. That said, having reread it, I can understand exactly why I found this so compelling. This was the book that sold me on the fantasy of planetary exploration and colonization as a delightful and desirable experience! You could go to a beautiful new world and discover baby dragons and have random islands named after you! You could build a new Utopian society! Is Anne McCaffrey's vision of a Utopian society uncomfortably libertarian? Sure, but I was ten, I didn't know what libertarians were, I just understood that Sorka was having a very cool time as a happily free-range child exploring the Pernese landscape. I don't think it was until I read Mary Roach's Packing for Mars as an adult that I fully came to terms with the fact that going to space actually sounded like a deeply unpleasant time, logistically speaking, and let the faint wisps of the Dragonsdawn dream of First Feet Down on a beautiful new planet that's functionally just like Earth with bonus charming telepathic fauna dissipate into the ether.

I mean, it is sort of an open question though: early Pernese culture, potential paradise or libertarian cult? I do think McCaffrey knows that the colonist's blissful vision of If Everyone Has Enough Land For Themselves We Can All Just Be Chill And Not Actually Bother Society-Building is doomed to some degree of failure on account of bad actors, even before it's interrupted by Thread. She could have just made it a book about dealing with Thread and developing dragons about it, and it would probably be a better book if she did, but she's so grimly determined to put some bad actors in just to demonstrate she knows they exist. This at least is my theory of how we got Evil Sexy Avril Bitra, perpetrator of history's most inexplicable heist. "If I go on this fifty-year mission, I can steal some diamonds, steal an escape pod, launch myself back out into space, and get picked up back in a society that's moved on a hundred years from the one I left! Probably they'll still want diamonds and I'll re-adapt just fine!"

So, I can understand, I guess, why Avril Bitra. I don't understand and don't think I will ever understand why Avril Bitra's narrative foil is a would-be tradwife who nonconsensually aphrodisiaced her way into marriage with a man who has never shown any romantic interest in anything except cave systems and then spent the next eight years making a shocked Pikachu face about the fact that he continued to not be all that into her. Why is Sallah Telgar's plot in this book? What is it doing here? Why is Avril Bitra evilly torturing Sallah on the spaceship given so much page space and weird psychosexual intensity when literally nothing about this plot actually impacts the colony's situation IN ANY ACTUAL WAY? I thought a reread would leave me less confused about all this than I was when I was ten and in fact I think it did the opposite. Anne, please ... you must have had some thoughts about this, thematically, structurally ... I'm coming to you, hat in hand, asking for answers.

I do think it's very funny that in the years between 1968 and 1989 Anne McCaffrey decided that it was a bit embarrassing that she'd built biological differences into her dragons such that the queens don't breathe fire, and decided to blame it on the fact that the dragons were genetically designed by an Extremely Traditional Chinese Grandma instead. Is it also racist? Yes, extremely. But if we start talking about all the unfortunate well-meaning racism in Dragonsdawn we'll be here all day and I don't have that much day left. Racism aside I did find myself unexpectedly somewhat moved by the subplot I did not remember at all in which Kenjo Fusaiyuki, a guy who has made a Profound Mistake in moving to an isolated colony planet that's dedicated itself to being low-tech and abandoning spaceflight, desperately hoards fuel for as long as possible to put off the time when he will have to at last give up for good and all the thing he loves most and is best at in all the world.

And you know who could've saved Kenjo Fusaiyuki's life, if she had stopped to help the two guys Avril Bitra clonked on the head instead of uselessly pursuing her into space? YES, IT'S ANOTHER SALLAH TELGAR CRIME. Sallah Telgar, you have so much to answer for.

Me-and-media update

Apr. 17th, 2026 10:05 am
china_shop: An orange cartoon dog waving, with a blue-green abstract background. (Bingo!)
[personal profile] china_shop
Previous poll review
In the Stoic hurt/comfort poll, 44.2% of respondents prefer the stoic character stoically/reluctantly/awkwardly providing comfort, vs 41.9% who prefer them receiving comfort (pretty sure that's within the margin of error, though); and 27.9% said it depends. Three people (including me) checked "I'm not into hurt/comfort." <3

In ticky-boxes, appreciating being able to breathe through your nose came second to hugs, 62.8% to 79.1%. Thank you for your votes! ♥

Reading
I finished The Hymn to Dionysus by Natasha Pulley, read by Sid Sagar, a m/m clockpunk fantasy novel set in ancient Thebes. I especially enjoyed the Theban POV, and I grew increasingly more engaged as it progressed. Might read it again sometime in text.

Still making my way through Refuse to Be Done by Matt Bell. I'm up to the advice for third drafts.

Andrew and I finished Warrior's Apprentice by Lois McMaster Bujold, read by Grover Gardner, while polishing off a jigsaw, and have started The Vor Game, in which Miles is instructed to learn to respect authority, and immediately sets out to manipulate everyone around him.

Kdramas
The same four as last week: Phantom Lawyer, You're Beautiful (ahhhh!), Love Scout, and Lovely Runner. The latter involves the female lead time-travelling 15 years into her past self, and she seems weirdly unaware of the age gap between her and the school-age male lead. Maybe this isn't a romance? (Writing this made me consider an alternate version where her contemporary self just sends her diary or something to the past instead, so her teen self would be armed with all the knowledge but still age-appropriate.)

Other TV
Finished Paper Girls (argh, permanent cliffhanger ending!) and Connections (BBC). Still watching The Pitt, Rooster, and Scrubs. Zoomed through all of Big Mistakes, a Netflix romp starring Dan Levy, which ended with a set-up for season 2.

Fringe (which is losing the plot, wow) and Bluey with my sister.

And we saw Hoppers at the cinema, and had a great time with it. Aww! Such an optimistic view of the world.

Audio entertainment
Dreaming Against the Machine (new podcast by Adam Becker, author of More Everything Forever), episode 1: "Futurists, with Reo Eveleth". The podcast is about "envisioning a realistic and hopeful future", and this episode was really great. I found it via the Better Offline episode "More, Everything, Forever with Adam Becker".

(Aside: something about DAtM made me think that podcasts are the blogs of today: thoughtful people making their ideas and conversations public, very voicey and intimate in a way. And presumably just as hard to break into (in the English-language sphere) if you're not a confident user of the English language...)

Writing/making things
Getting back into the swing of writers' hour now it's moved to 8am for the winter -- which is timely, because I have a 520 Day assignment fic to write. (I was aiming for short, but it's already over 1500w 2300w, with at least two scenes to go. Which is what happens when you mostly read novels, I guess.)

Life/health/mental state things
We've had a few days of gorgeous weather (and next week is looking dire), which has meant a lot of biking. Plus I have builders working on reputtying some of my windows, which is disruptive and dusty, so I've been out a lot; yesterday I worked on my 520 fic at our newly re-opened central public library. All of which is to say that my arms are pretty mad at me. Bluetooth keyboards are great, but so is my home ergonomic setup. And I can only handle so much biking atm.

The window work is in a race against the weather, and weather forecasting has got less accurate since some @#$#*ing incompetent shitheads @#(*ed up the US Weather Service. So who knows if my house will be weatherproof next week? No one!

I'm not as cranky as this sounds. Just a bit stressed, and my house is covered in a fine layer of dust. Guess I'm looking at a thorough spring autumn clean once this is all done.

Had a flu jab on Wednesday.

Link dump
Get your Letter to the Editor published. Every. Time. | AO3 admin post about Spambot Comments on AO3 (different types, and what to do about them) | Remarkable survival after hawk trapped in car grille | Mom cat shows her kittens the German shepherd is safe (Youtube, via [personal profile] starandrea).

Good things
Lovely weather. Mobile technology and ebikes. Writing!! Friendly builders. Andrew and Halle and friends and Dreamwidth.

Poll #34482 Fanfic vs Profic
Open to: Registered Users, detailed results viewable to: All, participants: 47


Do you have different prose standards for reading profic vs fanfic?

View Answers

no, I'm pretty relaxed about prose quality if other aspects of the story capture me
9 (19.1%)

yes, I'm more picky about fanfic
0 (0.0%)

yes, I'm more picky about profic...
20 (42.6%)

... with the exception of certain genres
5 (10.6%)

no, I'm picky across the board
17 (36.2%)

other
6 (12.8%)

ticky-box of to read makes our speaking English good
21 (44.7%)

ticky-box full of podcasts
5 (10.6%)

ticky-box of how many rivers must an otter swim down before you can call it an otter
27 (57.4%)

ticky-box full of 42
22 (46.8%)

ticky-box full of hugs
31 (66.0%)

Recent Reading: The Black Fantastic

Apr. 14th, 2026 04:18 pm
rocky41_7: (Default)
[personal profile] rocky41_7 posting in [community profile] books

I don’t know how I keep timing these so that I finish my audiobook and my paper book one right after the other. This weekend I also wrapped up The Black Fantastic, an anthology compiled by Andre M. Carrington. Thank you to [personal profile] pauraque for bringing this one to my attention! This is a collection of “Afrofuturist” stories by Black authors. If you want more detail, Pauraque has done individual reviews of each story which you can read here; I won’t get that specific.

With the usual caveat that all anthologies vary in quality, I enjoyed this one. There were a lot of very different stories, from some really fantastical stuff to ones that are just a little bit to the left of the world as it stands. On the high end of things, pieces like A Guide to the Native Fruits of Hawai’i by Alayna Dawn Johnson, where the protagonist grapples with her decision to collaborate with a group of vampire invaders to prey on the locals (and the metaphor of vampirism for the way Hawaii is treated by wealthy Americans is not lost in the shuffle); or The Orb by Tara Campbell, which was both strange and unexplained, choosing to focus not on the “why” or “how” of the situation but again on the moral quandary of its main character.

On the lower end, ones like The Ones Who Stay and Fight by NK Jemisin, which felt…narratively unclear, to say the least. It is either a satire of the kind of utopia writers create where its status as utopia is essentially dependent on eliminating any disagreement or contact with the outside world…or it’s a whole-hearted endorsement of that view. And if I can’t tell which, I tend to think the author’s failed at their purpose; or Ruler of the Rear Guard by Maurice Broaddus, which seemed to end just as it was getting to the plot.

Overall, I had fun with this anthology. SFF short story collections, done well, are such a scintillating showcase of creativity and I felt that here.


Recent Reading: The Tainted Cup

Apr. 13th, 2026 04:43 pm
rocky41_7: (Default)
[personal profile] rocky41_7 posting in [community profile] books

On Sunday I finished The Tainted Cup, the first book in the Shadow of the Leviathan series by Robert Jackson Bennett. This is a fantasy murder mystery with an element of political thriller.

The main character is Ana Dolabra, an eccentric but brilliant investigator, and I believe this is the first time I’ve ever seen a woman fill this role. The wacky but effective investigator is of course a very well-known stock character, but has always been, in my experience, a man. I found Ana delightful; strange but not off-putting, and without coming off like the author was working to hard to make her quirky.

However, our point-of-view protagonist is Din Kol, Ana’s put-upon assistant, on whose shoulders falls the managing of her many idiosyncrasies. They’re a fun team to watch work, and in this first book we get to see their working relationship unfold, as they’ve only recently teamed up at the start. Din is fine, but mostly I appreciated him as a lens for Ana.

Bennett’s fantasy world is characterized by fantastical use and manipulation of plants and the human body. Din, for instance, has been modified to be an “engraver”—someone with an eidetic memory. For obvious reasons, this serves him well as aid to an investigator.

I think Bennett does a good job of throwing you into the world and letting you use context to figure most of it out. I get bored with SFF novels that feel the need to hold your hand, as if you might be a first-time SFF reader who never encountered a magic system before, so I was relieved when Bennett just started telling the story and letting me figure the world out as it went along. I’d rather be a bit lost at times than be toddled along, but I never felt lost here.

The novel touches on some things that I feel are pretty keenly relevant, like the ability of the wealthy to avoid justice and their willingness to inflict suffering on the rest of society to better their own position (and then justify it to themselves).

I don’t read a ton of murder mysteries, so I may not be the best judge of this, but I also felt that Ana worked well. It’s a tough trick writing a character who’s meant to be much smarter than the rest of the cast (perhaps even than the author!), and it can fail a couple of ways: the supposed “brilliant” deductions are obvious to the average reader, making the rest of the cast look painfully dull for not seeing them; or the machinations are so obtuse with so little evidence the reader simply won’t believe the detective could have figured that out without an ass-pull from the author. I didn’t think Bennett fell into either of these traps and every detail Ana referred to in one of her deductions was something that had been mentioned before.

I only have one real criticism and that is about how unrealistic the sword fight scene was. I simply don't think it was necessary to showcase what the Bennett was trying to show us about Din, and <spoiler>having an untried swordsman defeat three--almost four--trained imperial soldiers on his own (partially because they do him the courtesy of attacking one at a time)</spoiler> was so unrealistic it jarred me right out of the scene. As Milgen points out later in the book--fighting is not just about memorizing the right moves.

I enjoyed this book and I plan to read the next one. Very interested to see where Ana’s adventures take her next!


github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: a19cc8c787fca5419d8469a5977323ed68c450c2 https://github.com/dreamwidth/dreamwidth/commit/a19cc8c787fca5419d8469a5977323ed68c450c2 Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M src/dwtool/main.go

Log Message:


Improve esn-trace URL resolution with userid lookup and precise Loki queries

Resolve the journal's userid from their profile page so we can build exact Loki regex queries matching [esn ETYPEID:JOURNALID:JTALKID:ARG2] instead of broad substring matches on ":JTALKID:" which produced false positives.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Commit: b1e684b607034fa480f654db748922660b063d9d https://github.com/dreamwidth/dreamwidth/commit/b1e684b607034fa480f654db748922660b063d9d Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M cgi-bin/DW/Task/ESN/FiredEvent.pm M cgi-bin/LJ/DB.pm

Log Message:


Fix ESN dropping notifications due to replication lag on comment load

FiredEvent reads comment data to determine which users' Reply subscriptions are relevant. LJ::Comment::preload_rows loads via get_cluster_reader, which hits the replica — but the comment was just written to the master and may not have replicated yet. When this race is lost, the comment fails to load, relevantuserids returns empty, Reply subscriptions are excluded, and the notification is silently dropped.

Fix: wrap the subscription lookup in LJ::DB::require_master so all reads go to the cluster master. Also extend get_cluster_reader to respect the existing PRAGMAFORCE_MASTER flag, which previously only affected global (non-cluster) readers.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Compare: https://github.com/dreamwidth/dreamwidth/compare/eae7aaa21ba6...b1e684b60703

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 439d836de1e77290f029a08afebd37d4b177f74f https://github.com/dreamwidth/dreamwidth/commit/439d836de1e77290f029a08afebd37d4b177f74f Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: A src/dwtool/internal/config/loki.go A src/dwtool/internal/loki/client.go M src/dwtool/main.go

Log Message:


Switch dwtool log-scan and esn-trace from CloudWatch to Loki

Logs now go directly to Grafana Cloud Loki via Fluent Bit, so dwtool needs to query Loki instead of CloudWatch. Adds a Loki HTTP client that queries /loki/api/v1/query_range with LogQL, and rewrites both log-scan and esn-trace to use it.

Credentials are loaded from ~/.config/dwtool/config.json (with DWTOOL_LOKI_HOST/USER/PASSWORD env var overrides). The Loki client strips Fluent Bit key_value wrapper and log4perl timestamp/level prefix from messages so output is clean.

Other fixes: - Renamed logscan → log-scan for consistency with esn-trace - Fixed flag parsing in esn-trace: Go's flag package stops at the first positional arg, so esn-trace URL -since 24h silently ignored -since. Args are now reordered so flags come first. - log-scan uses -service instead of -groups for filtering by Loki service label instead of CloudWatch log group glob - Service column is hidden when -service is specified (redundant)

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Commit: eae7aaa21ba6b5d07a1ed3378505a9a0b156b995 https://github.com/dreamwidth/dreamwidth/commit/eae7aaa21ba6b5d07a1ed3378505a9a0b156b995 Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M .github/workflows/tasks/web-canary-service.json M .github/workflows/tasks/web-shop-service.json M .github/workflows/tasks/web-stable-service.json M .github/workflows/tasks/web-unauthenticated-service.json

Log Message:


remove cloudwatch agent sidecar from web task definitions

The CW agent was configured to collect Apache access logs but was pointing at a -DISABLED log path, so it was burning resources for nothing. Removes the sidecar container, log-share volume, and associated mount from all four web service task definitions.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Compare: https://github.com/dreamwidth/dreamwidth/compare/b046642d6f54...eae7aaa21ba6

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

(no subject)

Apr. 12th, 2026 09:05 am
skygiants: Rue from Princess Tutu dancing with a raven (belle et la bete)
[personal profile] skygiants
Scorched Earth is described on its website as a piece of dance theater about a detective reopening an Irish cold case, a description which fascinated us so much that we made a second patently absurd decision to once again park in NYC just exactly long enough to see a show before continuing on our multi-state travel.

If you'd forced me to describe what I expected from this show, I would have hazarded something like 'Tana French book, adapted as a ballet?' Not at ALL correct. The cold case is not a mystery, not full of twists: we've got one detective, one suspect, one victim, one piece of land (and one ambiguously metaphorical donkey.) The ninety-minute show begins with a series of projected documents explaining the history of Irish Land Dispute Murders before establishing a more-or-less regular pattern: short interrogation scenes between the detective and the suspect, interspersed with bursts of emotion and memory, some dramatized and some in dance.

Sometimes -- often -- this worked extraordinarily well. The land under dispute is represented, personified, by a dancer in a ghillie suit who slithers in and out of the central interrogation/morgue table* like a giant muppet, or the Swamp Thing and dances a violently romantic duet with the suspect -- and it could have looked so silly, as I'm describing it it sounds silly, and instead it was haunting and evocative, perfectly elucidating the narrative themes of the show while also just being a gripping and powerful piece of performance.

*remarkable piece of set design, that table; afterwards we all agreed it was the hardest-working table in show business

Other times, the balance felt a little off; the dialogue would tell us something and then a duet would be danced and I'd think, well, you didn't need to tell us both ways, one or the other would have worked fine. Or I'd start to admire the dialogue for its spareness in suggesting the complexity of a dynamic -- who's from here, who isn't, who has rights to land, who doesn't, what's worth punishing on behalf of the community, what isn't -- and then it say it again more explicitly and I'd be like, well, okay, but you didn't have to. What I'm saying is that I think the show probably could have been just as powerful at sixty minutes as at ninety minutes. But I wasn't at all unhappy to be there for ninety minutes! I was compelled the whole time! If the show sometimes told me things about the situation more times or more explicitly than I needed to hear them, it did an admirable job of not telling me what to think about them, and trying to decide what I did think about them left me plenty to occupy my mind.

A lot of the creative team seem to have a history with Punch Drunk and have worked on Sleep No More explicitly, and it was interesting for me to compare/contrast -- the style of expressive choreography is notably similar, but Sleep No More is a piece of theater that has almost no dialogue, that draws a lot of its power from being oblique and ambiguous to the point of fault. Finding that exact right point of convergence for dance and theater seems to be an ongoing challenge and point of interest for the people coming out of the Punch Drunk school and I'm very curious to see other explorations of it.
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: b046642d6f54f301e4f4a128472cc9edfa8fd80c https://github.com/dreamwidth/dreamwidth/commit/b046642d6f54f301e4f4a128472cc9edfa8fd80c Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M .github/workflows/tasks/worker-birthday-notify-service.json M .github/workflows/tasks/worker-change-poster-id-service.json M .github/workflows/tasks/worker-codebuild-notifier-service.json M .github/workflows/tasks/worker-content-importer-lite-service.json M .github/workflows/tasks/worker-content-importer-service.json M .github/workflows/tasks/worker-content-importer-verify-service.json M .github/workflows/tasks/worker-directory-meta-service.json M .github/workflows/tasks/worker-distribute-invites-service.json M .github/workflows/tasks/worker-dw-change-poster-id-service.json M .github/workflows/tasks/worker-dw-distribute-invites-service.json M .github/workflows/tasks/worker-dw-embeds-service.json M .github/workflows/tasks/worker-dw-esn-cluster-subs-service.json M .github/workflows/tasks/worker-dw-esn-filter-subs-service.json M .github/workflows/tasks/worker-dw-esn-fired-event-service.json M .github/workflows/tasks/worker-dw-esn-process-sub-service.json M .github/workflows/tasks/worker-dw-import-eraser-service.json M .github/workflows/tasks/worker-dw-incoming-email-service.json M .github/workflows/tasks/worker-dw-latest-feed-service.json M .github/workflows/tasks/worker-dw-lazy-cleanup-service.json M .github/workflows/tasks/worker-dw-mass-privacy-service.json M .github/workflows/tasks/worker-dw-send-email-service.json M .github/workflows/tasks/worker-dw-sphinx-copier-service.json M .github/workflows/tasks/worker-dw-support-notify-service.json M .github/workflows/tasks/worker-dw-synsuck-service.json M .github/workflows/tasks/worker-dw-xpost-service.json M .github/workflows/tasks/worker-embeds-service.json M .github/workflows/tasks/worker-expunge-users-service.json M .github/workflows/tasks/worker-import-eraser-service.json M .github/workflows/tasks/worker-import-scheduler-service.json M .github/workflows/tasks/worker-incoming-email-service.json M .github/workflows/tasks/worker-latest-feed-service.json M .github/workflows/tasks/worker-lazy-cleanup-service.json M .github/workflows/tasks/worker-paidstatus-service.json M .github/workflows/tasks/worker-process-privacy-service.json M .github/workflows/tasks/worker-resolve-extacct-service.json M .github/workflows/tasks/worker-schedule-synsuck-service.json M .github/workflows/tasks/worker-ses-incoming-email-service.json M .github/workflows/tasks/worker-shop-creditcard-charge-service.json M .github/workflows/tasks/worker-spellcheck-gm-service.json M .github/workflows/tasks/worker-sphinx-copier-service.json M .github/workflows/tasks/worker-sphinx-search-gm-service.json M .github/workflows/tasks/worker-support-notify-service.json M config/update-workflows.py

Log Message:


Ship worker logs directly to Grafana Cloud Loki via Fluent Bit

Regenerated all 42 worker task definitions to use awsfirelens with a Fluent Bit log_router sidecar instead of the awslogs driver. Worker logs now go directly to Grafana Cloud Loki over HTTPS, bypassing CloudWatch Logs entirely.

Each task definition gains a log_router container (~15MB RSS) running aws-for-fluent-bit:3 (Fluent Bit v4.2.2, the 3.x line based on AL2023 — the 2.x line ships Fluent Bit 1.9 which has no Loki plugin). Loki credentials are injected via SSM secrets at task startup. The worker container's logDriver changes from awslogs to awsfirelens with the native loki output plugin.

Fluent Bit's own logs still go to CloudWatch (/dreamwidth/fluent-bit) so the log router itself can be debugged if needed.

Generated by config/update-workflows.py from config/workers.json.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: ece0b7970913514a534e88d20b8383a4555ebe5a https://github.com/dreamwidth/dreamwidth/commit/ece0b7970913514a534e88d20b8383a4555ebe5a Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M .github/workflows/tasks/worker-birthday-notify-service.json M .github/workflows/tasks/worker-change-poster-id-service.json M .github/workflows/tasks/worker-codebuild-notifier-service.json M .github/workflows/tasks/worker-content-importer-lite-service.json M .github/workflows/tasks/worker-content-importer-service.json M .github/workflows/tasks/worker-content-importer-verify-service.json M .github/workflows/tasks/worker-directory-meta-service.json M .github/workflows/tasks/worker-distribute-invites-service.json M .github/workflows/tasks/worker-dw-change-poster-id-service.json M .github/workflows/tasks/worker-dw-distribute-invites-service.json M .github/workflows/tasks/worker-dw-embeds-service.json M .github/workflows/tasks/worker-dw-esn-cluster-subs-service.json M .github/workflows/tasks/worker-dw-esn-filter-subs-service.json M .github/workflows/tasks/worker-dw-esn-fired-event-service.json M .github/workflows/tasks/worker-dw-esn-process-sub-service.json M .github/workflows/tasks/worker-dw-import-eraser-service.json M .github/workflows/tasks/worker-dw-incoming-email-service.json M .github/workflows/tasks/worker-dw-latest-feed-service.json M .github/workflows/tasks/worker-dw-lazy-cleanup-service.json M .github/workflows/tasks/worker-dw-mass-privacy-service.json M .github/workflows/tasks/worker-dw-send-email-service.json M .github/workflows/tasks/worker-dw-sphinx-copier-service.json M .github/workflows/tasks/worker-dw-support-notify-service.json M .github/workflows/tasks/worker-dw-synsuck-service.json M .github/workflows/tasks/worker-dw-xpost-service.json M .github/workflows/tasks/worker-embeds-service.json M .github/workflows/tasks/worker-expunge-users-service.json M .github/workflows/tasks/worker-import-eraser-service.json M .github/workflows/tasks/worker-import-scheduler-service.json M .github/workflows/tasks/worker-incoming-email-service.json M .github/workflows/tasks/worker-latest-feed-service.json M .github/workflows/tasks/worker-lazy-cleanup-service.json M .github/workflows/tasks/worker-paidstatus-service.json M .github/workflows/tasks/worker-process-privacy-service.json M .github/workflows/tasks/worker-resolve-extacct-service.json M .github/workflows/tasks/worker-schedule-synsuck-service.json M .github/workflows/tasks/worker-ses-incoming-email-service.json M .github/workflows/tasks/worker-shop-creditcard-charge-service.json M .github/workflows/tasks/worker-spellcheck-gm-service.json M .github/workflows/tasks/worker-sphinx-copier-service.json M .github/workflows/tasks/worker-sphinx-search-gm-service.json M .github/workflows/tasks/worker-support-notify-service.json M config/update-workflows.py

Log Message:


Ship worker logs directly to Grafana Cloud Loki via Fluent Bit

Regenerated all 42 worker task definitions to use awsfirelens with a Fluent Bit log_router sidecar instead of the awslogs driver. Worker logs now go directly to Grafana Cloud Loki over HTTPS, bypassing CloudWatch Logs entirely.

Each task definition gains a log_router container (~15MB RSS) running the AWS-maintained Fluent Bit image from private ECR. Loki credentials are injected via SSM secrets at task startup. The worker container's logDriver changes from awslogs to awsfirelens with the grafana-loki output plugin.

Fluent Bit's own logs still go to CloudWatch (/dreamwidth/fluent-bit) so the log router itself can be debugged if needed.

Generated by config/update-workflows.py from config/workers.json.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Commit: 0d49a7588ae0544ef51801c977e8df41c651e3b5 https://github.com/dreamwidth/dreamwidth/commit/0d49a7588ae0544ef51801c977e8df41c651e3b5 Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M cgi-bin/DW/Worker/ContentImporter.pm M cgi-bin/DW/Worker/ContentImporter/LiveJournal.pm

Log Message:


tidy

Compare: https://github.com/dreamwidth/dreamwidth/compare/d7d5b8fbd0bb...0d49a7588ae0

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

raisedbymoogles: (Default)
[personal profile] raisedbymoogles
.....after 30 years I still have to look up the solution to the barrel puzzle XD
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: d7d5b8fbd0bb1063688f06cc820d3e65bae09a45 https://github.com/dreamwidth/dreamwidth/commit/d7d5b8fbd0bb1063688f06cc820d3e65bae09a45 Author: Mark Smith mark@dreamwidth.org Date: 2026-04-12 (Sun, 12 Apr 2026)

Changed paths: M cgi-bin/DW/Task/ESN/ProcessSub.pm M cgi-bin/LJ/ESN.pm M etc/config-local.pl.example

Log Message:


Auto-deactivate ESN subscriptions for idle users

When processing notifications, deactivate subscriptions that belong to users who have been idle for over a year ($LJ::ESN_INACTIVE_DAYS, default 365). This happens in two places:

  • LJ::ESN::unique_matching_subs: if a sub requires a paid capability the user no longer has (e.g. thread tracking after paid expired) AND the user is idle, deactivate the sub before it reaches matches_filter.

  • DW::Task::ESN::ProcessSub: if a user is idle, deactivate the sub after the first skip so it never generates another SQS job.

Deactivated subs set the INACTIVE flag, NOT deleted. The user can still see them on /manage/tracking and reactivate them when they return. LJ::Subscription::create also automatically reactivates matching inactive subs when a user re-subscribes.

The idle threshold is configurable via $LJ::ESN_INACTIVE_DAYS in config-local.pl (documented in the example file). The same variable is used for the existing ProcessSub idle-skip check, replacing a previously hardcoded 365.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

Profile

jlh: Chibi of me in an apron with a cocktail glass and shaker. (Default)
Clio, a vibrating mass of YES!

October 2021

S M T W T F S
     12
3456789
10111213141516
171819202122 23
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2026 11:53 pm
Powered by Dreamwidth Studios