james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


A schoolgirl abandons the UK's post-Brexit educational system for the comparative safety and comfort of a magical school designed to turn out magical soldiers in the war on eldritch horrors.

Vanya and the Wild Hunt (Vanya, volume 1) by Sangu Mandanna

Five SFF Stories About Making Amends

Jun. 26th, 2025 10:20 am
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


People adopt very different strategies when it comes to making up for mistakes.

Five SFF Stories About Making Amends

Golem100 by Alfred Bester

Jun. 26th, 2025 08:50 am
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


What could possibly go wrong with a little harmless Satanism between friends?

Golem100 by Alfred Bester
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


His Majesty the Worm, a megadungeon-crawling fantasy roleplaying game from Josh McCrowell at Rise Up Comus.

Bundle of Holding: His Majesty the Worm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


Each would-be pet owner gets three simple rules for taking care of the exotic animals Count D supplies. How hard could it possibly be to follow three simple rules?

Pet Shop of Horrors, volume 1 by Matsuri Akino
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


Silverside Station attracts the rich, the famous, and the bizarre, as well as two Allowed Burglars bent on flamboyant larceny.

House of Shards (Drake Maijstral, volume 2) by Walter Jon Williams
[personal profile] mjg59
Single signon is a pretty vital part of modern enterprise security. You have users who need access to a bewildering array of services, and you want to be able to avoid the fallout of one of those services being compromised and your users having to change their passwords everywhere (because they're clearly going to be using the same password everywhere), or you want to be able to enforce some reasonable MFA policy without needing to configure it in 300 different places, or you want to be able to disable all user access in one place when someone leaves the company, or, well, all of the above. There's any number of providers for this, ranging from it being integrated with a more general app service platform (eg, Microsoft or Google) or a third party vendor (Okta, Ping, any number of bizarre companies). And, in general, they'll offer a straightforward mechanism to either issue OIDC tokens or manage SAML login flows, requiring users present whatever set of authentication mechanisms you've configured.

This is largely optimised for web authentication, which doesn't seem like a huge deal - if I'm logging into Workday then being bounced to another site for auth seems entirely reasonable. The problem is when you're trying to gate access to a non-web app, at which point consistency in login flow is usually achieved by spawning a browser and somehow managing submitting the result back to the remote server. And this makes some degree of sense - browsers are where webauthn token support tends to live, and it also ensures the user always has the same experience.

But it works poorly for CLI-based setups. There's basically two options - you can use the device code authorisation flow, where you perform authentication on what is nominally a separate machine to the one requesting it (but in this case is actually the same) and as a result end up with a straightforward mechanism to have your users socially engineered into giving Johnny Badman a valid auth token despite webauthn nominally being unphisable (as described years ago), or you reduce that risk somewhat by spawning a local server and POSTing the token back to it - which works locally but doesn't work well if you're dealing with trying to auth on a remote device. The user experience for both scenarios sucks, and it reduces a bunch of the worthwhile security properties that modern MFA supposedly gives us.

There's a third approach, which is in some ways the obviously good approach and in other ways is obviously a screaming nightmare. All the browser is doing is sending a bunch of requests to a remote service and handling the response locally. Why don't we just do the same? Okta, for instance, has an API for auth. We just need to submit the username and password to that and see what answer comes back. This is great until you enable any kind of MFA, at which point the additional authz step is something that's only supported via the browser. And basically everyone else is the same.

Of course, when we say "That's only supported via the browser", the browser is still just running some code of some form and we can figure out what it's doing and do the same. Which is how you end up scraping constants out of Javascript embedded in the API response in order to submit that data back in the appropriate way. This is all possible but it's incredibly annoying and fragile - the contract with the identity provider is that a browser is pointed at a URL, not that any of the internal implementation remains consistent.

I've done this. I've implemented code to scrape an identity provider's auth responses to extract the webauthn challenges and feed those to a local security token without using a browser. I've also written support for forwarding those challenges over the SSH agent protocol to make this work with remote systems that aren't running a GUI. This week I'm working on doing the same again, because every identity provider does all of this differently.

There's no fundamental reason all of this needs to be custom. It could be a straightforward "POST username and password, receive list of UUIDs describing MFA mechanisms, define how those MFA mechanisms work". That even gives space for custom auth factors (I'm looking at you, Okta Fastpass). But instead I'm left scraping JSON blobs out of Javascript and hoping nobody renames a field, even though I only care about extremely standard MFA mechanisms that shouldn't differ across different identity providers.

Someone, please, write a spec for this. Please don't make it be me.

Bundle of Holding: Cawood Monsters

Jun. 23rd, 2025 01:57 pm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


Bestiaries and DM sourcebooks from Andrew Cawood at Cawood Publishing for Dungeons & Dragons Fifth Edition (2014) and compatible tabletop roleplaying games.

Bundle of Holding: Cawood Monsters
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


Encouraging the next generation of space pirates and superheroes...

Five Stories Featuring Highly Supportive Parents

Clarke Award Finalists 2002

Jun. 23rd, 2025 10:09 am
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll
2002: Cherie Blair wows Britain with a notably successful real estate deal, Terry Pratchett's Night Watch wins the Best Scottish Socialist novel Prometheus Award, and an earthquake shakes England after Margaret Thatcher makes a public appearance.

Poll #33279 2002 Clarke Award Finalists
Open to: Registered Users, detailed results viewable to: All, participants: 34


Which 2002 Clarke Award Finalists Have You Read?

View Answers

Bold As Love by Gwyneth Jones
11 (32.4%)

Fallen Dragon by Peter F. Hamilton
7 (20.6%)

Mappa Mundi by Justina Robson
7 (20.6%)

Pashazade by Jon Courtenay Grimwood
10 (29.4%)

Passage by Connie Willis
23 (67.6%)

The Secret of Life by Paul J. McAuley
5 (14.7%)



Bold for have read, italic for intend to read,, underline for never heard of it.

Which 2002 Clarke Award Finalists Have You Read?
Bold As Love by Gwyneth Jones
Fallen Dragon by Peter F. Hamilton
Mappa Mundi by Justina Robson
Pashazade by Jon Courtenay Grimwood
Passage by Connie Willis
The Secret of Life by Paul J. McAuley

Well, it was a long day

Jun. 22nd, 2025 11:35 pm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll
But I ended it by reuniting one fellow with his wallet and someone else with their car keys.
tcpip: (Default)
[personal profile] tcpip
I must prefix this entry with a note of appreciation to Kate R., for looking after "mes animaux de compagnie", Mayhem and Mayday, during my first recent trip to China and Rafe EC for the second. It's good to have such excellent neighbours in my life. My companion ratties are now approaching an entire year of age, which, by a rule-of-thumb, is about 30 years on a human scale. As always, I prefer to let my rodent friends a free-range lifestyle and in this case the study is their home. Poor Mayday, however, is currently in protective custody as his larger brother has power-groomed him a little too much, and his back has too many bite marks. Whilst he disagrees, I assure him it's for his own good, and he seems to be recovering in his relative solitude, spending most evenings snuggled up on my shoulder; it's good to be a rat in my home.

This week, after returning from China, I have, as can be expected, caught up with a lot of work-related business. But I have not neglected my social life either. Kate took me out to the "Ballet of Lights: Sleeping Beauty". It was a very family-friendly affair and, as Kate described it, "P-plates for experiencing ballet". But it was at the Capitol Theatre, a venue I adore, and the costumes with embedded lights were attractive and effective. The following day I caught up with Mel during the day, whom I haven't seen for too long, and then Liza D. for dinner and discussion about her forthcoming performance. The following evening I found myself at Carla BL's Winter Soltice gathering where conversation was vibrant and diverse, but spent most time with Julie A., who joined me today at the Australia-China Friendship Society meeting which was addressed by Dr Fiona Swee-Lin Price on bi-cultural experiences, history, and understanding. Frankly, the presentation was nothing less than glorious, and all attendees thought very highly of the presentation and insights.

It has not been all smooth sailing on this return week, however. I have, unfortunately, experienced a couple of disappointments, one in the form of an otherwise knowledgeable person who stubbornly refused to accept a descriptive error on their own part that was objectively wrong. This occurs more often from political partisanship and typically results in increasingly aggressive responses as the cognitive dissonance kicks in. The other, which I look upon from the benefit of extensive lived experience, is a somewhat sub-optimal life-choice for the person, assuming they care about their future success, but normatively it's their prerogative. In situations like this, one can only offer future support, and then we will remember ("memories in future tense", as "The Church" described it decades ago).

The Delikon by H M Hoover

Jun. 22nd, 2025 08:54 am
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


The Delikon invested millennia trying to civilize humans, a gift for which humans intend to show appropriate gratitude.

The Delikon by H M Hoover
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll
(quoting from an emailed newsletter because if there was a press release, I missed it)

Voting is now open for this year's Aurora Awards. CSFFA members have until 11:59pm EDT on July 19th, 2024, to submit their ballot.

Only current members of CSFFA can vote in the Aurora Awards.

Two favours

Jun. 21st, 2025 06:31 pm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll
Could some kind person update the awards section of my Wikipedia article?

Also, could some kind person add my latest Aurora nomination to my ISFDB article? Unless it is OK for me to do so.

TIL

Jun. 21st, 2025 06:16 pm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll
Funk & Wagnalls published at least one SF anthology, and my library has a copy.

Books Received, June 14 to June 20

Jun. 21st, 2025 08:55 am
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


Five works new to me: 2 fantasy, 1 non-fiction, 2 science fiction, of which 1 belongs to a series, and the other 4 are stand-alone.

Books Received, June 14 to June 20

Poll #33275 Books Received, June 14 to June 20
Open to: Registered Users, detailed results viewable to: All, participants: 48


Which of these look interesting?

View Answers

99 Ways to Die: And How to Avoid Them by A. M. Alker, M. D. & Ashely Alker (January 2026)
25 (52.1%)

The Folded Sky by Elizabeth Bear (June 2025)
25 (52.1%)

From These Dark Abodes by Lyndsie Manusos (May 2024)
9 (18.8%)

The Prestige by Christopher Priest (July 2025)
9 (18.8%)

Deathly Fates by Tesia Tsai (April 2026)
14 (29.2%)

Some other option (see comments)
0 (0.0%)

Cats!
32 (66.7%)

New to me

Jun. 20th, 2025 12:01 pm
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


This is a painting by Édouard Frédéric Wilhelm Richter, who I had never heard of. As well, it's an example of "orientalist" painting, which I had also never heard of. Seems to be depictions of the east (starting at the middle east), as imagined by a painter whose online bio does not mention having ever visited the east.

Some interesting detail work in the expanded version.
james_davis_nicoll: (Default)
[personal profile] james_davis_nicoll


All that stands between Alessa Li and freedom from Hellebore Technical Institute for the Ambitiously Gifted is a single carnage-filled rite of passage, or as the unspeakable teachers call it, dinner.

The Library at Hellebore by Cassandra Khaw

My a11y journey

Jun. 20th, 2025 01:11 am
[personal profile] mjg59
23 years ago I was in a bad place. I'd quit my first attempt at a PhD for various reasons that were, with hindsight, bad, and I was suddenly entirely aimless. I lucked into picking up a sysadmin role back at TCM where I'd spent a summer a year before, but that's not really what I wanted in my life. And then Hanna mentioned that her PhD supervisor was looking for someone familiar with Linux to work on making Dasher, one of the group's research projects, more usable on Linux. I jumped.

The timing was fortuitous. Sun were pumping money and developer effort into accessibility support, and the Inference Group had just received a grant from the Gatsy Foundation that involved working with the ACE Centre to provide additional accessibility support. And I was suddenly hacking on code that was largely ignored by most developers, supporting use cases that were irrelevant to most developers. Being in a relatively green field space sounds refreshing, until you realise that you're catering to actual humans who are potentially going to rely on your software to be able to communicate. That's somewhat focusing.

This was, uh, something of an on the job learning experience. I had to catch up with a lot of new technologies very quickly, but that wasn't the hard bit - what was difficult was realising I had to cater to people who were dealing with use cases that I had no experience of whatsoever. Dasher was extended to allow text entry into applications without needing to cut and paste. We added support for introspection of the current applications UI so menus could be exposed via the Dasher interface, allowing people to fly through menu hierarchies and pop open file dialogs. Text-to-speech was incorporated so people could rapidly enter sentences and have them spoke out loud.

But what sticks with me isn't the tech, or even the opportunities it gave me to meet other people working on the Linux desktop and forge friendships that still exist. It was the cases where I had the opportunity to work with people who could use Dasher as a tool to increase their ability to communicate with the outside world, whose lives were transformed for the better because of what we'd produced. Watching someone use your code and realising that you could write a three line patch that had a significant impact on the speed they could talk to other people is an incomparable experience. It's been decades and in many ways that was the most impact I've ever had as a developer.

I left after a year to work on fruitflies and get my PhD, and my career since then hasn't involved a lot of accessibility work. But it's stuck with me - every improvement in that space is something that has a direct impact on the quality of life of more people than you expect, but is also something that goes almost unrecognised. The people working on accessibility are heroes. They're making all the technology everyone else produces available to people who would otherwise be blocked from it. They deserve recognition, and they deserve a lot more support than they have.

But when we deal with technology, we deal with transitions. A lot of the Linux accessibility support depended on X11 behaviour that is now widely regarded as a set of misfeatures. It's not actually good to be able to inject arbitrary input into an arbitrary window, and it's not good to be able to arbitrarily scrape out its contents. X11 never had a model to permit this for accessibility tooling while blocking it for other code. Wayland does, but suffers from the surrounding infrastructure not being well developed yet. We're seeing that happen now, though - Gnome has been performing a great deal of work in this respect, and KDE is picking that up as well. There isn't a full correspondence between X11-based Linux accessibility support and Wayland, but for many users the Wayland accessibility infrastructure is already better than with X11.

That's going to continue improving, and it'll improve faster with broader support. We've somehow ended up with the bizarre politicisation of Wayland as being some sort of woke thing while X11 represents the Roman Empire or some such bullshit, but the reality is that there is no story for improving accessibility support under X11 and sticking to X11 is going to end up reducing the accessibility of a platform.

When you read anything about Linux accessibility, ask yourself whether you're reading something written by either a user of the accessibility features, or a developer of them. If they're neither, ask yourself why they actually care and what they're doing to make the future better.
Page generated Jun. 28th, 2025 02:18 pm
Powered by Dreamwidth Studios