May 25th, 2026
stoats!

Day 4641. There are 325 red stoats, 183 blue stoats, and 492 green stoats.

birdylion: picture of an exploding firework (Default)
Fandom: Lord of the Rings, The Hobbit, The Silmarillion
Pairings/Characters: Belladonna Took
Rating: General Audiences
Length: 11440 words
Creator Links: [archiveofourown.org profile] Thimblerig
Theme: Journey & Travel, Action/Adventure, Backstory, Epistolary, Female Characters, Gen, Pre-Canon

Summary:
Gandalf exclaimed once: 'That I should live to be 'Good morninged' by a son of Belladonna Took!' Bilbo's mum has a story to tell and this is it. Holidays by the Sea, Elves, and much Falling in the Water.

Reccer's Notes:
This is such a lovely story about Belladonna Took, an adventurous hobbit herself. We read/hear it as she writes it down while pregnant with Bilbo, and she tells the story of a journey she took when she was younger and "less respectable". It's an action adventure and quite fun to read and listen to, a really nice background for her.

Fanwork Links: My Adventure, by Belladonna Baggins nee Took on ao3
Podfic of My Adventure, by Belladonna Baggins nee Took read by the author
posted by [syndicated profile] pennyarcade_feed at 07:01am on 25/05/2026
rydra_wong: Lee Miller photo showing two women wearing metal fire masks in England during WWII. (Default)
posted by [personal profile] rydra_wong at 08:57am on 25/05/2026 under
Here's what Peter Watts (author of Blindsight) said about them in Forbes:

Finally, someone I’m sure none of you have ever heard of, because she’s a new Canadian author published by the tiny Bumblepuppy Press, and by the time you read this, her books will be prohibitively expensive due to tariffs. Rachel Rosen, whose ongoing Sleep of Reason trilogy (the second book has only just been released) depicts a future climate-ravaged world in which demons stalk the Rockies and so-called “MAIs” (Magic-Affected Individuals) are used by Canadian politicians to plan their campaigns. Canada falls into dictatorship in the first book; the Resistance hangs on by its fingernails in the second. There are Earthquakes and opera singers and prison camps for human experimentation. There’s a sapient tech-bro submarine. I don’t know how many non-Canadians these books might resonate with, but I’ll bet that number is increasing daily, down below the 49th at least. I would not have believed that a fantasy novel could be so depressingly relevant.


N.B. I would like to point out that the sapient techbro submarine is in fact a sleek black techbro submarine which has been possessed by an eldritch horror from the depths along with the remains of its crew who unfortunately for them may not be wholly dead and it's the resulting entity which may be sapient.

Because personally I feel that Watts is severely underselling how insanely badass this part is. I just really love the submarine, okay?
tamaranth: me, in the sun (Default)
posted by [personal profile] tamaranth at 07:37am on 25/05/2026 under ,
2026/073: Platform Decay — Martha Wells

Mensah just looked at me and said, “SecUnit.” In that voice. The voice that’s the only reason I’m still here and alive and surrounded by … friends. (Emotion check: Good, actually. Really good.) (Emotion check: It is still hard to say the friends part.) [loc. 2474]

Murderbot is asked by Dr Mensah to help some family members escape from a space station run by evil corporation Barish-Estranza. Turns out the family members (including children, ugh) are being more or less held hostage and may be forced to work for B-E. Read more... )

Mood:: 'calm' calm
posted by [syndicated profile] mcshep_feed at 09:18pm on 24/05/2026

Posted by Goddess47

by

"Thought you had this one figured out."

Words: 407, Chapters: 1/1, Language: English

Series: Part 22 of DoMAYstic 2026

posted by [syndicated profile] mcshep_feed at 06:03pm on 23/05/2026

Posted by ArtThiefAtHeart

by

Rodney's anniversary present to John is a pair of tiny black silk boxers.

Words: 610, Chapters: 1/1, Language: English

Series: Part 24 of Sugar High, Sugar Crash, Sweet Forever: Old Married McShep Fluff

posted by [syndicated profile] mcshep_feed at 01:23pm on 22/05/2026

Posted by whimsicalmeerkat

by

“No one appreciates me,” Rodney says.

Podfic of fools by whimsicalmeerkat.

Words: 25, Chapters: 1/1, Language: English

Series: Part 6 of [Podfic] Voiceteam 2026, Part 4 of [Podfic] drabbles

posted by [syndicated profile] apod_feed at 05:21am on 25/05/2026
tielan: (24 - Renee2)
posted by [personal profile] tielan at 10:03am on 25/05/2026 under
We won hockey, against a team we expected to lose against.

I scored the goal - short corner, it got passed around several times in the circle, and I was on the left post when the ball crossed the goal and I tapped it in. Whew! I don't often get it in, but I was there and it worked.

They were a good team - solid, some older experienced players, some younger ones with more energy and legs. And they were a pleasant team to play against, which was great. Some teams just leave you with a bad taste in the mouth. This one didn't. We tussled over the ball, but it wasn't bitchy.

We expected to lose against them because the whispers before the game were that they beat a team we'd beaten in the first round - by 10-0. We beat the team they thrashed by 2-0 back in the first round though. I mean, I could point out that they didn't have me playing, but in spite of scoring the goal, I would hardly say I was instrumental in this game. Our midfielders were on point for this one - intercepting, tackling, getting the ball away... All three '3-2-1' points for team MVP this week went to midfielders.

Anyway, I am super-sore, and will be seeing the physio this afternoon. Oof. I kind of wish I could have scored a massage beforehand to loosen everything up, but...couldn't manage otherwise.

May 24th, 2026
posted by [personal profile] jazzyjj at 09:36pm on 24/05/2026 under
It's challenge time!

Comment with Just One Thing you've accomplished in the last 24 hours or so. It doesn't have to be a hard thing, or even a thing that you think is particularly awesome. Just a thing that you did.

Feel free to share more than one thing if you're feeling particularly accomplished!

Extra credit: find someone in the comments and give them props for what they achieved!

Nothing is too big, too small, too strange or too cryptic. And in case you'd rather do this in private, anonymous comments are screened. I will only unscreen if you ask me to.

Go!
posted by [syndicated profile] neugierig_feed at 12:00am on 24/05/2026

Posted by Evan Martin

This post is part of a series on Theseus, my win32/x86 emulator.

Theseus now can produce WebAssembly output, allowing it to translate a .exe file into something that runs on the web. Try it out here, but note it is full of bugs (e.g. Minesweeper crashes if you win).

This was pretty straightforward to get working, with the exception of one major detail that this post will go into.

The x86 emulation part of this is just recompiling the existing Theseus output with a different CPU target. This is one of the main benefits of this binary translation approach. The translated code is almost (with the exception of how main gets invoked) wholly agnostic to the environment it eventually runs in. In principle I now get optimized wasm compiler output for relatively free. The main challenge was figuring out the code layout to get Cargo to cooperate with my weird requirements.

The win32 part was changing things to abstract over a "Host" API that is able to do things like fetch mouse events and render pixels. That is now implemented once for SDL and once for the web. This was also relatively straight forward, at least in my first pass.

So what was hard? It comes to a part of the design space I hadn't previously explored well: whether the emulator is allowed to block.

To block or not to block

In retrowin32, the emulator was designed to be able to step through some instructions and then return control to the caller. This is critical for the web version in particular, where you cannot block the main thread. In my earlier post "threading in two ways" I went into some detail on the various tradeoffs on how I could emulate threads in a browser, ultimately choosing a single thread.

This has its advantages, but is unsatisfying in a few important ways:

  • The main thread must repeatedly call into the emulator in a loop that yields control back to the browser.
  • Any Windows API implementation that might transfer control to the emulator must be made async, so that it can be suspended and resumed. This is obvious for functions that take a callback, but even a function like MoveWindow will synchronously send Windows messages related to moving to the window, so it is also async with respect to the message handling.
  • And finally, all the normal reasons async code is yucky: getting object lifetimes correct, how stack traces are busted, confusing debugging, and so on.

In the spirit of exploring the design space, when I got to revisit this choice in Theseus I instead made everything synchronous and implemented threads using real OS threads. In particular because Theseus maps the original program's code to function calls, it makes the debugging experience pretty pleasant: if I set a breakpoint or if something crashes, I get a stack trace that goes through both the source program and emulator code.

debugger screenshot

Picture: a Theseus program in a native debugger, with a stack trace including a generated x86 address on the left, and with a thread picker showing the Windows "winmm" multimedia thread on the right.

I mostly care about the developer experience here, but one additional reason this approach is nice is performance. Computers are really good at quickly running simple code made of nested function calls that store things on the stack. My asynchronous approach meant there was a lot of control overhead, even in tight loops.

Blocking on the web

In all, blocking is great. But on the web, you cannot block. Even in a single-threaded program a call to a Windows API like GetMessage is supposed to block until a message is available, but browser events will only come in via the browser event loop once you've returned control. It would seem you're stuck.

What it really means is that fundamentally, if you want to block, you must use a thread, even in the case where the program you're emulating is itself single-threaded. So here's the approach: I run the emulator's threads in web workers. When the emulator needs something from the browser, it can send a message via the postMessage API that comes in on the main thread's event loop. Critically, at this point I make the worker block until the message is handled.

This where the atomics API comes in. (Uh oh, synchronization code! The chances that I got this wrong are extremely high; I welcome your feedback on this, and I post it in part to provoke some reader who knows more than me to correct me.)

If you share memory between the main thread and worker, you can make the worker block on an atomic until the main thread is done. To do this, the worker sends the address of a local when it posts its message:

fn blocking_call() {
    let mut buf = 0i32;
    let msg = create_message(
        /* ... some JavaScript data indicating what function to call ... */,
      
        // ... and include the *address* of the above 'buf' variable
        &mut buf as *mut _ as u32
    );
    post_message(msg);
    unsafe {
        // wait while buf==0 until we get an Atomic notify on it
        wasm32::memory_atomic_wait32(&mut buf, 0, -1 /* forever */);
    }
}

The main thread receives these, and wakes the worker up when it's done by prodding the shared memory:

window.onmessage = (e) => {
  const msg = e.data;
  // ... handle message ...
  
  // interpret msg.buf as a pointer within the shared memory:
  const ints = new Int32Array(sharedMemory.buffer, msg.buf, /* length */ 1);
  ints[0] = 1;  // set `buf` from above to mark it successfully handled
  // wake up the waiting thread:
  Atomics.notify(ints, /* index */ 0, /* how many to wake up */ 1);
}

Note that because the worker is blocked until its message is processed, we know that the address of the local stack variable remains live until the main thread is done with it. This means we can effectively pass the address of any local variable from the worker and the main thread can safely modify it as it chooses.

From this sketch I hope you can see how I extended this to pass buffers in both ways: e.g. when the worker generates pixels, it sends a message just with a pointer to the pixels that the main thread can read directly from its memory (no copies!). And when the worker blocks to wait for an event, it can supply a buffer that the main thread can fill in.

The main limitation of this approach is that the main thread cannot transfer any browser objects to the worker thread, because those must come in via the browser event loop.

TypeScript in the host?

You might have noticed the above code switches into TypeScript to show the main thread handler. At first I intended to write all of this as a single wasm blob that contained the code for both the main thread and the worker threads. I eventually turned back to TypeScript for a few reasons.

Because the main thread cannot block, this means it cannot practically share its memory with the workers if any synchronization might be involved. That would veto even using a malloc implementation. I think the best way to make this work is by running the main thread wasm with its own private memory, and handing it a reference to the workers' shared memory. I think because that shared memory object is opaque, you would need to call out to browser APIs to interact with it, rather than the native wasm memory APIs.

Unlike the main thread, the workers can safely malloc despite sharing memory because they can use locks like an ordinary program would. ...except that for reasons I don't fully understand, the Rust standard library under wasm isn't compiled with support for atomics turned on. Thankfully, there's a relatively supported but still nightly Rust path to rebuild the standard library itself as part of the worker build process. (It does however highlight that using shared memory web workers at all with Rust is still not exactly a supported path.)

The other main reason I turned back to TypeScript is that the worker threads cannot access the DOM, and while that can be cumbersome it also provides a nice wall between the Rust worker code and browser hosting code. The Rust/wasm support for interacting with the DOM is better than it could be, but it's still pretty clunky, where e.g. any DOM function you call gets wrapped in a JS helper that is imported by the wasm module. Instead I can write my Rust code without any knowledge of browser API, and do all of the DOM munging on the TypeScript side.

In general, it's hard to beat the experience of using TypeScript for web development. Tools like debugging and interactively inspecting objects are far superior to wasm debugging. (Also the recent TypeScript compiler rewrite in Go works well, it's so fast!)

The main downside so far is serialization. I still haven't yet figured out a mechanism I'm happy with for transporting more complex objects across the host/worker boundary. I saw a tech talk recently where someone used Rust's rkyv library for this purpose and it looked pretty neat.

What's next?

Ultimately the purpose of any of these projects is just to learn about the things I was curious about.

From this excursion I conclude that writing apps in wasm is impressive but still not quite there yet — I am glad I have my native build to fall back on when I want to deploy fancier tools. This is definitely a pattern I learned at Figma (where they also had a native build of their wasm-based app) and one that I would recommend to you.

Similarly, I conclude that Rust with shared memory workers is still pretty early. I think for an app where you really cared it works pretty well, but "use a nightly compiler so you can recompile the standard library" is not a great sign.

For Theseus itself, I have a few ideas of where to go next, but those will have to wait for another post!

soemand: (Default)
posted by [personal profile] soemand at 07:41pm on 24/05/2026

Masted; sails bent; zoom.

posted by [personal profile] swaldman at 10:59pm on 24/05/2026 under , , ,
I don't often buy tickets for the Orkney Folk Festival. Partly because I'm not very much into Scottish trad folk, partly because as the festival has gotten bigger I've found it less fun, and partly because my mental health hasn't been great for relaxing into folk music for the last few years.

I do tend to like American folk more than Scottish. For the last few years the Festival seems to have had an approach of mixing up different styles and spreading them across all their concerts, which hasn't worked for me; but this year they had a full event aimed at Americana. So I bought a ticket (£26! As I said, the festival's getting too big for its own good...)

Then it got to the afternoon of the show, and I didn't feel like going. I'd failed at getting anything done for a whole saturday[1], and I was feeling tired miserable, and I didn't think I could face three hours of noise and people. I went anyway, thinking there was a good chance that I would leave part way through.

I arrived and found that my seat in row B was not near the front but the second-to-*back* row. That's very very odd, although apparently cinemas do it. But actually a blessing on this occasion, because it got me some distance from the stage and thus a bit less intensity.

View from the back of the picky arena, showing how far from the stage Row B is!

The sound for this gig was really good, even at this distance and even though it's in what is basically a sports hall (they had some drapes on one side and behind the stage, but nothing behind the audience). Good craft from the sound engineer, no doubt, but also, modern mini line arrays are amazing.

I enjoyed the evening. I wasn't able to relax and get fully into it, but I enjoyed it anyway. First there was Stoatfinger, a local group who tend to the American styles. Then a group from NYC that I didn't rate too much. Then, the main draw of the evening for me: Kenneth Pattengale - one half of the Milk Carton Kids, a duo that I've low-key enjoyed for a while. Considering how big a name that is, I was surprised that the place wasn't full - and I think he was a little too - but on reflection his gentle, contemplative, style isn't that close a match to the vibe of the OFF. I loved it.


And then to round things off was a group from southern Louisiana. They were good, in a more upbeat style, but also made me think about something that seems obvious, but I've never considered before - that many of the old songs of Louisiana are in French. Perhaps that's mostly the white songs? I don't know. It was a mixed-race group, and they were casually bilingual in song.

Two men and one woman on stage under coloued lights. Fiddle, accordian and guitar.

I would really like to get my mental health back to a place where I can actually enjoy gig-going again...


[1] Yes, that's sort of the point of the weekend, but not something I always have time for. I realised later that this was the first day I'd had in nearly three weeks of not either travelling or being at work.
location: Aberdeen
Mood:: 'complicated' complicated
brumeier: John Goes Meep_SGA (John Goes Meep)
Title: Echoes of the Dead
Author: [personal profile] brumeier
Challenge(s): puzzle/echo
Fandom(s): Stargate Atlantis/The Sentinel
Pairing(s): Madison Miller/OMC, Jim Ellison/Blair Sandburg
Wordcount: 2,633
Warning(s): murder, corpse, casefic, supernatural elements

Summary: In 1870s Cascade, Madison Miller is called in on a case by local detective and Sentinel Jim Ellison because she has a special skill - she can speak with the dead.
goddess47: Emu! (Default)


Title: Stuck Lock
Author: [personal profile] goddess47
Fandom: Stargate Atlantis
Characters: John Sheppard/Rodney McKay
Rating: PG
Word Count: 407

Summary:

"Thought you had this one figured out."


Notes:

For [community profile] sga_saturday prompt 544-548 - puzzle

For DoMAYstic 2026 day 23 (I'm behind) - stuck lock


Stuck Lock on AO3

 

stardust_rifle: A cartoon-style image of of a fluffy brown cat sitting upright and reading a book, overlayed over a sparkly purple circle. (Default)
My Extremely Square ass is writing a scene where a character does LSD, and they (AMAB NB) hallucinate seeing and fusing with a female version of themself- for the rest of the trip, their proprioception/body map is altered so that they feel as though they have a more "female" body shape (eg, breasts, wider hips).

My question is in the title- is fucking with the body's proprioception/body map/sense of touch in this way something LSD can do? Also, the contents of the trip are kind of plot-relevant, so if LSD can't actually do this, are there any hallucinogens that can (and that people take recreationally/Actually Enjoy Tripping On)?

Thanks!
posted by [personal profile] cosmolinguist at 08:44pm on 24/05/2026 under , ,

D and I had a nice time this afternoon, asking local pubs and restaurants if they'd put up a flyer advertising the local queer club that we're on the committee for.

D had designed and printed the posters today; they look great (while also being full of useful information and as accessible as printed things are going to be).

I can really recommend joining an in-person thing, printing stuff on paper, and going around asking strangers if we can put it up there; everyone was kind and friendly -- sometimes even to the point of suggesting nearby derelict buildings that are full of posters, heh. (We didn't take that advice but felt good about worthy of this inside info.)

This has been on my mind, because of the EHRC guidance. Yesterday morning, I said on fedi:

I went to transgym this morning and it was fun and silly and supportive and no one mentioned the EHRC thing and I used the men's room.

The world is still out there for us. As it should be.

The weather has been glorious today too, cloudless blue sky and it actually hit 80F today. We apparently walked 3.5 miles in the course of all this (and getting to and from home of course). I had a pint of Sam Smith's alpine lager, a nonalchoholic ginger beer, and a delicious apple juice with added mint and ginger, so I stayed hydrated!

Tomorrow I'm hoping to drag myself to the gym, since there won't be circuits on a bank holiday. D said he might join me, which would be great. And it also means that we can flyer the gym/library itself, and maybe a few other places that were closed when we went past today.

case: (Default)
posted by [personal profile] case at 02:09pm on 24/05/2026

⌈ Secret Post #7079 ⌋

Warning: Some secrets are NOT worksafe and may contain SPOILERS.


01.


More! )


Notes:

Secrets Left to Post: 02 pages, 31 secrets from Secret Submission Post #1011.
Secrets Not Posted: [ 0 - broken links ], [ 0 - not!secrets ], [ 0 - not!fandom ], [ 0 - too big ], [ 0 - repeat ].
Current Secret Submissions Post: here.
Suggestions, comments, and concerns should go here.
elisheva_m: a water colour rainbow on a water colour sky with the word hope (Default)
posted by [personal profile] elisheva_m at 07:36pm on 24/05/2026
Edit: Ok, another crap idea. Axing it. Got it. Thanks.

Context for this wee scene - shift handover between bodyguards, 1st speaker has drugged their boss because his gambling was out of control. Can't find the right search string to get around medical advice on mild sleeping pill sedatives etc, but I think diazepam probably isn't strong enough? Or maybe it is, or maybe only if enough is administered it would cause other problems. Not that anyone is particularly worried about an overdose but the scene is rather early in the novel for that to happen.

“You’re in for a rough day once he wakes up.”
“How bad did he lose?”
“I spiked his drink at 750,000 bhat.”
Pod shakes his head.
“We could just not let him wake up. Keep feeding him diazepam until we’re ready to deal with him again.”
“Is that what you gave him?”
“Rohypnol first, and GHB to mess with his memory. Diazepam cause we got home at 4 and I wanted the rest of the night off.”

May

SunMonTueWedThuFriSat
          1
 
2
 
3
 
4
 
5
 
6
 
7
 
8 9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31