Follow Friday 2-27-26

2026-Feb-27, Friday 13:45
ysabetwordsmith: Cartoon of me in Wordsmith persona (Default)
[personal profile] ysabetwordsmith posting in [community profile] followfriday
Got any Follow Friday-related posts to share this week? Comment here with the link(s).

Here's the plan: every Friday, let's recommend some people and/or communities to follow on Dreamwidth. That's it. No complicated rules, no "pass this on to 7.328 friends or your cat will die".


rbarclay: (rad)
[personal profile] rbarclay
A couple years ago I bought a bicycle front light with low-/high beam, with the low beam dynamo- and the high beam battery-powered.
My plan was to use a single 18650 plus a step-up transformer to get up to the required 12V for the battery part.

While this worked just fine on the table at home I never managed to package it all up properly for use on the road (rain, vibrations etc.).
And since the purely dynamo-ppwered light I'd bought in the meantime worked just fine, the part-battery-powered one gathered dust in some drawer.

But now I'm using father-in-laws e-bike, with its really really shitty light, so I though to hang it off the e-bikes battery. Which of course only does 6V on the ligth output . Then I thought "hey, fuck it, it's an electric bike, so weight is not an issue anyway", and put a 6x18650 battery pack in the bottle cage.

Original light:
https://youtu.be/FtDwrjq2MhY?t=2365

New one:
https://youtu.be/1356pQg2UP0?t=1962

And, because the cheap action cam does pretty badly in low light, I also filmed it with the company Iphone:
https://youtu.be/ZlowiXZr3BM?t=1967

I'm impressed. In this case, both by the light, and the Iphone.

(As a bonus, I got a pretty angry shout when I flashed an oncoming cyclist who had his own light angled for full blinding. Which is petty, but also oh-so-satisfying ;) )
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: b34ffa15c1ddbf033ec3bdd48681425046ee8201 https://github.com/dreamwidth/dreamwidth/commit/b34ffa15c1ddbf033ec3bdd48681425046ee8201 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-26 (Thu, 26 Feb 2026)

Changed paths: M src/jbackup/jbackup.pl

Log Message:


Fix jbackup cookie lost on redirect to www subdomain

LWP::UserAgent drops manually-set Cookie headers when following redirects (e.g. dreamwidth.org -> www.dreamwidth.org). Use a proper cookie jar so the ljsession cookie survives redirects.

Co-Authored-By: Claude Opus 4.6 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: dcb3dfdd7b9e4b01f62b7546589f33945ab51fe7 https://github.com/dreamwidth/dreamwidth/commit/dcb3dfdd7b9e4b01f62b7546589f33945ab51fe7 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: R .github/workflows/tasks/worker-import-eraser: idle-service.json

Log Message:


Remove bogus task file

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: d00724c9d10284c57382e88b10c6c16f94b04c30 https://github.com/dreamwidth/dreamwidth/commit/d00724c9d10284c57382e88b10c6c16f94b04c30 Author: Mark Smith mark@qq.is Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: M cgi-bin/Apache/LiveJournal.pm M cgi-bin/LJ/Protocol.pm M t/plack-request.t

Log Message:


Move LJ::Protocol::xmlrpc_method out of Apache/LiveJournal.pm

xmlrpc_method was defined in a package LJ::Protocol block at the bottom of Apache/LiveJournal.pm, which is never loaded under Plack. Move it into LJ/Protocol.pm so XMLRPC works under both servers.

The test now verifies the full getchallenge round-trip: transport layer works, response is not a SOAP fault, and the expected fields are present.

Co-Authored-By: Claude Opus 4.6 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: 4c1ff815597e0ee4b0fbdcc9b18c44a6ad46da86 https://github.com/dreamwidth/dreamwidth/commit/4c1ff815597e0ee4b0fbdcc9b18c44a6ad46da86 Author: Mark Smith mark@qq.is Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: M bin/tidyall M cgi-bin/DW/Controller/Inbox.pm M doc/dependencies-cpanm M t/02-tidy.t

Log Message:


Run tidyall with 10 parallel workers

Add -j 10 to both the bin/tidyall wrapper and the t/02-tidy.t test to parallelize Perl::Tidy checks across 10 forked workers. Also adds Parallel::ForkManager to dependencies-cpanm and picks up a tidyall formatting fix in DW::Controller::Inbox.

Co-Authored-By: Claude Opus 4.6 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: f5b688f23afc0f4fd15e380e560941a5489b6a39 https://github.com/dreamwidth/dreamwidth/commit/f5b688f23afc0f4fd15e380e560941a5489b6a39 Author: alierak alierak@gmail.com Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: M cgi-bin/DW/Controller/Inbox.pm M htdocs/inbox/index.bml

Log Message:


define inbox view and cur_folder consistently for mark read / delete all actions (#3526)

Co-authored-by: Mark Smith mark@dreamwidth.org

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: 17fb5f6dc0f31248f64f5eb0d12b61c239f9bb47 https://github.com/dreamwidth/dreamwidth/commit/17fb5f6dc0f31248f64f5eb0d12b61c239f9bb47 Author: Joshua Barrett jjbarr@ptnote.dev Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: M cgi-bin/DW/External/Site.pm A cgi-bin/DW/External/Site/Atproto.pm A cgi-bin/DW/External/Site/Bluesky.pm A cgi-bin/DW/External/Site/BlueskySocial.pm M cgi-bin/LJ/CleanHTML.pm M t/cleaner-markdown.t

Log Message:


Add support for [personal profile] mentions and [Unknown site tag] mentions for bluesky. (#3524)

  • Add support for [personal profile] mentions and [Unknown site tag] mentions for bluesky.

Bluesky usernames are FQDNs, and prior to now the [Bad username or site: user @ site] syntax has used the first dot to indicate where the username ends. Since this won't work for services where the username is the domain name, a special case has been introduced: if the final dotted segment in an [personal profile] mention is shorthand for an atproto-based site, everything else is assumed to be a username. This does introduce an irregularity: [com.bsky profile] user works to reference the bluesky user [example.com profile] user, but [bsky.app profile] user does NOT. This is done to prevent the mention as a whole from being a valid domain name (and because future atproto sites may eventually allow usernames that make such constructs ambiguous).

In addition to "bsky.app" and the "bsky" shorthand being added, "bsky.social" has been added to make referencing users with the default domain bluesky uses easier. An "Atproto" site, DW::External::Site::Atproto, as also been added as a place to store common code. It is complete and links to an "account overview" page listing services associated with the account, but has not yet been exposed to users.

At present, bluesky accounts are linked to by username, not be DID. This may be subject to future change.

CODE TOUR: It's now possible to reference bluesky accounts with @mentions! @username.bsky.social works the way you would expect. If a user has a custom username, you can suffix it with .bsky to make the link work (eg, @user.example.com.bsky). <user> tags also work as you would expect (<user name=user.bsky.social site=bsky.app>, <user name=user site=bsky.social>, and <user name=user.example.com site=bsky.app> all do what you expect).

  • https and minor nit fixes

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: bf0a8ec11e23acda60dfc8dc68d9fca2ca753c77 https://github.com/dreamwidth/dreamwidth/commit/bf0a8ec11e23acda60dfc8dc68d9fca2ca753c77 Author: Mark Smith mark@qq.is Date: 2026-02-25 (Wed, 25 Feb 2026)

Changed paths: M cgi-bin/DW/Request/Plack.pm A t/plack-request.t

Log Message:


Add missing headers_in and status_line methods to DW::Request::Plack

DW::Request::Plack was missing headers_in() and status_line(), which are implemented by both DW::Request::Apache2 and DW::Request::Standard. This caused XMLRPCTransport to crash under Plack with "Can't locate object method 'headers_in'". Also adds a comprehensive test suite for DW::Request::Plack covering all methods in the module.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

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

AI and Dreamwidth

2026-Feb-25, Wednesday 12:11
mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
[staff profile] mark posting in [site community profile] dw_dev

We've seen some questions lately about AI and how it relates to Dreamwidth, especially around scraping and training. Rather than answer piecemeal, I wanted to talk through how [staff profile] denise and I are thinking about this and try to be explicit about some things.

Dreamwidth is a user-supported service. We don't build the service around monetizing user data, and that informs how we approach AI just like it informs everything else we do.

Your content and AI training

Dreamwidth does not and will not sell, license, or otherwise provide user content for AI training. We have not and will not enter into data-access agreements for AI training purposes.

We will continue taking reasonable technical steps to discourage large-scale automated scraping, including known AI crawlers, where it is practical to do so. No public website can prevent scraping with absolute certainty, but we will keep doing what we reasonably can on our side.

AI features on Dreamwidth

Dreamwidth will not introduce AI features (and we have no current intention of doing so) that use or process user content without a public discussion with the community first.

We're only phrasing it like this because we can't predict the future and who knows what will be possible and available in five or ten years, but right now there's nothing we can see wanting to add.

If that ever changed, the conversation would happen openly before any decisions were made.

Site admin uses of AI

Keeping Dreamwidth usable means dealing with things like spam and abuse, and that sometimes requires automated admin tools to be more efficient or effective.

We are not currently using AI-driven systems for moderation or similar decisions.

If we ever decide that an AI-based tool would help address a site admin problem like spam, we will explain what we are doing and how it works (and ask for feedback!) before putting it into use. Any such tools would exist only to make it easier and more efficient for us to do the work of running the site.

AI and code contributions

Dreamwidth is an open-source project, and contributors use a variety of tools and workflows.

Contributors may choose whether or not to use AI-assisted tools when writing or reviewing code. Dreamwidth will not require contributors to use AI tools, and we will not reject contributions solely because AI-assisted tools were used.

For developers: if you use any AI-assisted development tools for generating a pull request or code contribution, we expect you to thoroughly and carefully review the output of those tools before including them in a pull request. We would ask the community not to submit pull requests from automated agents with no human intervention in the submission process.

I think it's important and I want to be able to review, understand, and maintain any contributions effectively, and that means humans are involved and making sure we're writing code for humans to work with, even if AI was involved.

Important note: this applies to code only. We expect any submitted images or artwork (such as for styles, mood themes, or anything else) to be the work of a human artist.

And to be very explicit, any AI-assisted development does not involve access to Dreamwidth posts or personal content.

In short summary

  • Dreamwidth does not and will not provide user content for AI training
  • Dreamwidth have not and will not enter data-sharing agreements for AI training and we will do what we can to prevent/discourage automated scraping by AI companies
  • Dreamwidth will not introduce AI features without a public discussion first
  • Any site admin use of AI tools will be explained openly and part of a public conversation
  • Contributors can choose their own development tools for code, but we do not accept images or artwork generated by AI

Oh, and we'll probably mention this (or a subset of this that isn't code related) in an upcoming [site community profile] dw_news post, but will defer to [staff profile] denise on that!

Code Tour: 2024-12-01 to 2026-02-25

2026-Feb-25, Wednesday 00:22
silveradept: A sheep in purple with the emblem of the Heartless on its chest, red and black thorns growing from the side, and yellow glowing eyes is dreaming a bubble with the Dreamwidth logo in blue and black. (Heartless Dreamsheep)
[personal profile] silveradept posting in [site community profile] dw_dev
Oh, hi, everybody! It's been a little bit since we did a code tour, hasn't it? But never fear, we're here to walk you through the changes that have happened since the last time we took a tour through the code changes in Dreamwidth.

Let's dive in, shall we?

Your code tour, with some attempts at arrangement by topic. )

There we go! Another year's worth of code commits, issues resolved, and attempts to make Dreamwidth a greater and cooler place to be. And to have it continue working into the future.

(We should do these more often, but volunteers and, well…*gestures broadly around*. So it may be a while before someone has the spoons to do this again, but we're always trying to be more consistent about it.)

Here are the totals for this code tour:

104 total issues resolved.
Contributors in this code tour: [github.com profile] Copilot, [github.com profile] alierak, [github.com profile] cmho, [github.com profile] dependabot, [github.com profile] jjbarr, [github.com profile] kareila, [github.com profile] l1n, [github.com profile] momijizukamori, [github.com profile] pauamma, [github.com profile] sirilyan, [github.com profile] zorkian
miriam_e: from my drawing MoonGirl (Default)
[personal profile] miriam_e
This graphics server that Kimi AI has been helping me to build lets me do wonderful things. Here are some pictures made using awk to explore the famous mandelbrot set:


x = 0.3798053
y = 0.09999955
side = .0000002
hue = 0.005


x = 0.3798053523334
y = 0.0999995944562
side = 0.000000000005
hue = 0.0035

The x and y coordinates are the position of the middle of the image. The side is the size of the vertical side of the image in the mandelbrot set. And hue is really a measurement of the spread of colors over the values in the image.

When I've eliminated the main bugs in the server I'll upload the program so anybody can use it from any computer language, regardless of whether the language has graphics commands.

I should have added the mandelbrot set using awk. Here it is (I've highlighted in red the special commands sent to the canvas server via its pixel bridge):
#!/bin/bash

wide=$(awk '/width/ {print $2}' ~/.config/canvas/settings)
high=$(awk '/height/ {print $2}' ~/.config/canvas/settings)

awk -v w="$wide" -v h="$high" '
BEGIN {
    hue_scale = 0.0035
    saturation = 0.9
    lightness = 0.5
    max = 10000          # iterations
    side = 0.000000000005     # size of image side (smaller = deeper zoom)
    midx = 0.3798053523334    # Center X (bigger = move camera right)
    midy = 0.0999995944562    # Center Y (bigger = move camera down)

	# X image size scales by aspect ratio to match Y size
    xside = side * w / h

    for (py = 0; py < h; py++) {
        y0 = (py - h/2) * side / h + midy
        
        for (px = 0; px < w; px++) {
            x0 = (px - w/2) * xside / w + midx
            
            x = 0; y = 0; iter = 0
            
            while (iter < max) {
                zx = x * x
                zy = y * y
                
                if (zx + zy > 4) break
                
                xtemp = zx - zy + x0
                y = 2 * x * y + y0
                x = xtemp
                iter++
            }
            
            # Color
            if (iter >= max) {
                print "pset " px, py, "(0 0 0)"
            } else {
                log_z = log(zx + zy) / 2
                smooth_n = iter + 1 - log(log_z) / log(2)
                hue = (smooth_n * hue_scale) % 1.0
                hsl_to_rgb(hue, saturation, lightness)
                print "pset " px, py, "(" _r, _g, _b ")"
            }
        }
        
        if (py % 10 == 0) print "flush"
    }
    print "flush"

}


function hsl_to_rgb(h, s, l,    q, p) {
	h = h - int(h)
	
	if (s == 0) {
		_r = _g = _b = int(l * 255)
		return
	}
	
	q = (l < 0.5) ? (l * (1 + s)) : (l + s - l * s)
	p = 2 * l - q
	
	_r = int(hue_helper(p, q, h + 1/3) * 255)
	_g = int(hue_helper(p, q, h) * 255)
	_b = int(hue_helper(p, q, h - 1/3) * 255)
}

function hue_helper(p, q, t) {
	if (t < 0) t += 1
	if (t > 1) t -= 1
	if (t < 1/6) return p + (q - p) * 6 * t
	if (t < 1/2) return q
	if (t < 2/3) return p + (q - p) * (2/3 - t) * 6
	return p
}

' | ./candraw

nsnotifyd-2.4 released

2026-Feb-24, Tuesday 20:16
fanf: (Default)
[personal profile] fanf

https://dotat.at/@/2026-02-24-nsnotifyd-2-4-released.html

The nsnotifyd daemon monitors a set of DNS zones and runs a command when any of them change. It listens for DNS NOTIFY messages so it can respond to changes promptly. It also uses each zone's SOA refresh and retry parameters to poll for updates if nsnotifyd does not receive NOTIFY messages more frequently. It comes with a client program nsnotify for sending notify messages.

This nsnotifyd-2.4 release includes a new feature and some bug fixes:

  • The new -S option tells nsnotifyd to send all SOA queries to a specific server.

    Previously, in response to a NOTIFY message, it would send a SOA query back to the source of the NOTIFY, as specified by RFC 1996.

    (Typically, a NOTIFY will only be accepted from a known authoritative server for the zone. The target of the NOTIFY responds with a SOA refresh query and zone transfer. But it should avoid trying to refresh from one of the other authoritative servers which might not have received the latest version of the zone.)

    Mark Felder encountered a situation where it would have been more convenient to fix the address that nsnotifyd sends SOA queries to, because the source of the NOTIFY messages wasn't responding on that address.

    Since nsnotifyd is intended to work as glue between disparate parts of a system, it makes sense for it to work around awkward interoperability problems.

  • The nsnotify client program was broken and unable to create NOTIFY messages. D'oh!

  • I have adjusted the release process so that it works better with git archive and web front-ends that offer tarball downloads.

Birdfeeding

2026-Feb-24, Tuesday 00:30
ysabetwordsmith: A bird singing (Birdfeeding)
[personal profile] ysabetwordsmith posting in [site community profile] dw_community_promo
[community profile] birdfeeding is a community started on January 1, 2023. It's all about birdfeeding, birdwatching, and other topics relating to birds. It also touches on nature in general, and observations that may effect bird activity such as local weather. Both text and image posts are welcome. Now is a great time to join as hungry birds are easy to attract with a feeder.

Community resources include posts about birding events, nurseries that sell seeds or plants attractive to birds, bird identification apps, the benefits of birdwatching, and other useful materials. Check out the anchor posts from Three Weeks for Dreamwidth.


Recent posts:

Sighting a Siberian Superstar: Local birder secures rare red-flanked bluetail for life list

Homes for Birds Week

Photos: House Yard and South Lot

Photos: Flowerbeds

Bird blizzard
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: f27c478d43d0c489b0252e384b0927475a31eda7 https://github.com/dreamwidth/dreamwidth/commit/f27c478d43d0c489b0252e384b0927475a31eda7 Author: momijizukamori momijizukamori+bugzilla@gmail.com Date: 2026-02-22 (Sun, 22 Feb 2026)

Changed paths: M bin/upgrading/en.dat M cgi-bin/DW/Controller/Talk.pm M cgi-bin/LJ/Global/Defaults.pm R htdocs/delcomment.bml R htdocs/delcomment.bml.text M htdocs/js/commentmanage.js M htdocs/js/jquery.commentmanage.js R htdocs/talkmulti.bml R htdocs/talkmulti.bml.text R htdocs/talkscreen.bml R htdocs/talkscreen.bml.text A views/delcomment.tt A views/delcomment.tt.text A views/talkmulti.tt A views/talkmulti.tt.text A views/talkscreen.tt A views/talkscreen.tt.text

Log Message:


Convert miscellaneous Talk pages to TT (#3497)

  • Convert talkmulti, talkscreen, and delcomment to TT

  • Clean up text strings

  • Fix routing and JSON returns

  • Fix string path

  • Clean up some minor errors

Routine Colonoscopy Countdown.

2026-Feb-23, Monday 08:46
leecetheartist: A lime green dragon head, with twin horns, and red trim. Very gentle looking, with a couple spirals of smoke from nose. (Default)
[personal profile] leecetheartist
 It's prep time. T minus 3 days.

Meal 1. Gluten free rice bubbles and vanilla yoghurt and 2 mugs of white coffee.


On the upside, yesterday was the Perth monthly fountain pen enthusiast meeting, so we sat around and talked, drew, wrote and looked at each others' pretty pens and ink and drank coffee or whatever everyone else was drinking.

Finished reading Network Effect to Rob and Mum last night, and we all started a rewatch of the serial. We'd eaten a delicious Indian takeaway, as a farewell to interesting food for me for 3 days. Mmm Vindaloo.

The Rhythm of Bitterness

2026-Feb-22, Sunday 11:48
tcpip: (Default)
[personal profile] tcpip
Last night I was a guest at the Chinese New Year concert at Hamer Hall, an event organised by the Melbourne Symphony Orchestra with the Chinese consulate. The concert was a good mix of modern and classical, East and West. Mindy Meng Wang's performance on the guzheng for The Butterfly Lovers was especially notable, and Li Biao's enthusiasm as conductor could not go unnoticed. The main part of the programme, Beethoven's 7th Symphony, is far from my favourite, but I do really like the dreamlike dirge of the second movement. There were also meet-and-greet functions before and after the concert, where one had the opportunity to meet various guests, organisers, and performers, along with vox-pop interviews from CCTV. It is certainly the season for such things, with, of course, the ACFS hosting our own concert next week.

As a sort of musical juxtaposition, earlier this week I wrote a review on Rocknerd for the most recent album, "Crocodile Promises" by The March Violets. Once a post-punk band from the early 80s, their company could also include groups like The Chameleons, The Comsat Angels, The Sisters of Mercy, Red Lorry Yellow Lorry, etc. However, more recently, they have moved to a more alt-rock sound, which isn't wrong (bands should develop their sound), but it is different. The album positively thunders along and is a deeply emotional collection of songs, of which "Bite the Hand" really stood out to me. On a related note (pun not intended), I have been delving quite deeply in recent days into the older albums by The Comsat Angels with their often spartan instrumentation and bitter and bleak lyrical content.

It is has all rather suited my current mood. Music is a universal language of mood, both in the uplifting and sombre sense. The latter affects me every day; I seriously don't understand how people remain indifferent to the immediate conflicts (e.g., Gaza) or to longer-term downward trends (e.g., the climate). February 18, for what it's worth, was Bramble Cay Melomys Day, a on-going memorial and campaign for the first mammal species driven to extinction by climate change. Yes, I can enjoy music, culture, artistry, and beauty, whilst simultaneously being driven by such events. As a certain J. Cash once wrote, "I'd love to wear a rainbow every day, And tell the world that everything's okay. But I'll try to carry off a little darkness on my back. 'Til things are brighter, I'm the man in black".
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: 0e57a69f14581a09c64220452225efd10842985d https://github.com/dreamwidth/dreamwidth/commit/0e57a69f14581a09c64220452225efd10842985d Author: Mark Smith mark@dreamwidth.org Date: 2026-02-21 (Sat, 21 Feb 2026)

Changed paths: M cgi-bin/Plack/Middleware/DW/SubdomainFunction.pm

Log Message:


Tidy SubdomainFunction.pm

Co-Authored-By: Claude Opus 4.6 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: 558458c9ab5c5548f20b6b380857292cc8350203 https://github.com/dreamwidth/dreamwidth/commit/558458c9ab5c5548f20b6b380857292cc8350203 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-20 (Fri, 20 Feb 2026)

Changed paths: M cgi-bin/Plack/Middleware/DW/Auth.pm M cgi-bin/Plack/Middleware/DW/SubdomainFunction.pm

Log Message:


Handle userpics subdomain in Plack middleware

The 'userpics' SUBDOMAIN_FUNCTION (e.g., v.dreamwidth.org) was not handled by SubdomainFunction middleware, causing userpic URLs to fall through to the Auth middleware which triggered unnecessary domain session cookie bounces. Under Apache, userpic_trans handles these directly without any auth flow.

Rewrite PATH_INFO from /{picid}/{userid} to /userpic/{picid}/{userid} to match DW::Controller::Userpic's route, and skip the domain session bounce since userpics are public images that don't need authentication.

Co-Authored-By: Claude Opus 4.6 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: 0c0f75384cb09c6515b5381d9873105581cad595 https://github.com/dreamwidth/dreamwidth/commit/0c0f75384cb09c6515b5381d9873105581cad595 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-20 (Fri, 20 Feb 2026)

Changed paths: M cgi-bin/LJ/Protocol.pm M cgi-bin/LJ/S2/ReplyPage.pm M cgi-bin/LJ/Talk.pm

Log Message:


Skip forced captcha on high-comment entries less than 30 days old

The 5k-comment captcha threshold was meant to slow bots targeting specific entries, but most spam hits old/abandoned journals while active anon memes are the ones suffering from the forced captcha.

Entries posted within the last 30 days can now receive up to the full 10k comments without a forced captcha. Entries older than 30 days keep the existing 5k threshold. All other captcha triggers (rate limiting, journal settings, spam heuristics) are unchanged.

Also refactors require_captcha_test to accept an LJ::Entry object instead of a bare ditemid, since the entry is already available at all call sites.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Commit: e78529d60c5e457534481f350c381821dc5810fd https://github.com/dreamwidth/dreamwidth/commit/e78529d60c5e457534481f350c381821dc5810fd Author: Mark Smith mark@dreamwidth.org Date: 2026-02-20 (Fri, 20 Feb 2026)

Changed paths: M .gitignore

Log Message:


Add .worktrees/ to .gitignore

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Compare: https://github.com/dreamwidth/dreamwidth/compare/86a23512cf4a...e78529d60c5e

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: 86a23512cf4aca54a77dd38f26348c19a338d83d https://github.com/dreamwidth/dreamwidth/commit/86a23512cf4aca54a77dd38f26348c19a338d83d Author: Nova sda1@umbc.edu Date: 2026-02-20 (Fri, 20 Feb 2026)

Changed paths: M cgi-bin/LJ/S2/EntryPage.pm

Log Message:


Add per-entry OpenGraph meta tags for public entries (#3522)

Emit og:title, og:type, og:url, og:site_name, og:description, og:image, article:published_time, article:author, and article:tag for public journal entries so that Discord, Slack, Facebook, and other services can generate meaningful link previews.

Only public entries get these tags — non-public entries keep the existing site-wide defaults (DW logo) to avoid content leakage. All attribute values are escaped with LJ::ehtml(). The entry OG block is prepended to head_content so the entry-specific og:image takes precedence over the site-wide fallback from Page().

Fixes #2206

Co-authored-by: Novalinium nova@noblejury.com Co-authored-by: Claude Opus 4.6 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: 722aca660143d17125cf5f95365e3d8272f5773c https://github.com/dreamwidth/dreamwidth/commit/722aca660143d17125cf5f95365e3d8272f5773c Author: Mark Smith mark@dreamwidth.org Date: 2026-02-20 (Fri, 20 Feb 2026)

Changed paths: M htdocs/js/jquery.shortcuts.nextentry.js

Log Message:


Fix k shortcut sometimes not scrolling to previous entry

prevPageEntry() used a strict < comparison with no tolerance, so if the scroll position landed even 1px past an entry's top (due to sub-pixel rounding or animation overshoot), pressing k would "scroll" to the entry already on screen, appearing to do nothing. Add the same 50px tolerance that nextPageEntry() already uses.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

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

An astronomical interlude

2026-Feb-20, Friday 15:41
leecetheartist: A lime green dragon head, with twin horns, and red trim. Very gentle looking, with a couple spirals of smoke from nose. (Default)
[personal profile] leecetheartist
It's been the New Moon, so a good time to get out there with the telescope!

Got some quite good detail with Centaurus A.

An unusual Galaxy with a dark stripe across it is in the centre of a well populated star field. There are distinctly red and blue tinted stars, and a faint satellite trail at the top of the image.





The Lambda Centauri Nebula, dusky pink against a star field of different sized stars, some blue white, some reddish. The Nebula looks a bit like an eagle or phoenix.
 
 
I rode this image into dangerous territory last night, because I ran out of space in the telescope, oops, but still it turned out pretty well. Remind me to clear off the scope this arvo! 
 
The first time I processed the image it was pretty bright, it didn't look very natural, so I did this version. I might post the lurid one later.
 
So who's ready to see the Carina Nebula I did a couple of nights ago after this? Only an hour or so but you'll get to see us Southern Hemisphere types' consolation prize for not having a pole star.



 

Follow Friday 2-20-26

2026-Feb-20, Friday 00:34
ysabetwordsmith: Cartoon of me in Wordsmith persona (Default)
[personal profile] ysabetwordsmith posting in [community profile] followfriday
Got any Follow Friday-related posts to share this week? Comment here with the link(s).

Here's the plan: every Friday, let's recommend some people and/or communities to follow on Dreamwidth. That's it. No complicated rules, no "pass this on to 7.328 friends or your cat will die".

yourlibrarian: MMMC Icon Reverse Colors (OTH-MMMC Icon Reverse-yourlibrarian)
[personal profile] yourlibrarian posting in [community profile] dreamwidth_meta
March Meta Matters Challenge banner by thenewbuzzwuzz


March 1 is just weeks away, so that means the kickoff to this year's March Meta Matters Challenge will be taking place soon! The challenge involves locating and copying over meta you've created to a second site in order to ensure its preservation, plus there will be some prompts for creating new meta.

Feel free to ask questions here about the challenge, locations, etc. Otherwise subscribe to [community profile] marchmetamatterschallenge and look for our opening post on March 1!
bens_dad: (Default)
[personal profile] bens_dad
It seems that Royal Mail (a privately owned company) is prioritising profitable parcels over letter post.
https://act.38degrees.org.uk/act/royal-mail-letters-eoi
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: 472e7ca0671a6f37896549ef3e935b8cfdd52f03 https://github.com/dreamwidth/dreamwidth/commit/472e7ca0671a6f37896549ef3e935b8cfdd52f03 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M bin/worker/ses-incoming-email

Log Message:


Fix SES worker to expect S3 action notifications

The SNS notification now comes from the S3 action's topic_arn (terraform change), so receipt.action will always be type S3. Revert the non-S3 skip to a proper error since it would indicate a misconfiguration.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Commit: 4895912982e33afbf41b439bc7d38d1a625b25b7 https://github.com/dreamwidth/dreamwidth/commit/4895912982e33afbf41b439bc7d38d1a625b25b7 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-17 (Tue, 17 Feb 2026)

Changed paths: M bin/worker/dw-embeds M cgi-bin/DW/Task.pm M cgi-bin/DW/TaskQueue.pm M cgi-bin/DW/TaskQueue/SQS.pm M t/taskqueue-dedup.t

Log Message:


Add max_retries support to TaskQueue to avoid DLQ pileup

Failed SQS tasks that exceed the receive count threshold are now marked complete instead of being left for the dead letter queue. The SQS layer passes ApproximateReceiveCount through to tasks, and start_work checks it against a configurable max_retries option. Applied to dw-embeds where unreachable remote hosts cause repeated failures that fill the DLQ.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Compare: https://github.com/dreamwidth/dreamwidth/compare/6792621c5547...4895912982e3

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

yourlibrarian: MMMC Icon Reverse Colors (OTH-MMMC Icon Reverse-yourlibrarian)
[personal profile] yourlibrarian posting in [site community profile] dw_community_promo
March Meta Matters Challenge banner by thenewbuzzwuzz


March 1 is just weeks away, so that means the kickoff to this year's March Meta Matters Challenge will be taking place soon! The challenge involves locating and copying over meta you've created to a second site in order to ensure its preservation, plus there will be some prompts for creating new meta.

Feel free to ask questions here about the challenge, locations, etc. Otherwise subscribe to [community profile] marchmetamatterschallenge and look for our opening post on March 1!

One page of async Rust

2026-Feb-17, Tuesday 19:42
fanf: (Default)
[personal profile] fanf

https://dotat.at/@/2026-02-16-async.html

I'm writing a simulation, or rather, I'm procrastinating, and this blog post is the result of me going off on a side-track from the main quest.

The simulation involves a bunch of tasks that go through a series of steps with delays in between, and each step can affect some shared state. I want it to run in fake virtual time so that the delays are just administrative updates to variables without any real sleep()ing, and I want to ensure that the mutations happen in the right order.

I thought about doing this by representing each task as an enum State with a big match state to handle each step. But then I thought, isn't async supposed to be able to write the enum State and match state for me? And then I wondered how much the simulation would be overwhelmed by boilerplate if I wrote it using async.

Rather than digging around for a crate that solves my problem, I thought I would use this as an opportunity to learn a little about lower-level async Rust.

Turns out, if I strip away as much as possible, the boilerplate can fit on one side of a sheet of paper if it is printed at a normal font size. Not too bad!

But I have questions...

Read more on my blog...

I've had a letter from Buckingham Palace

2026-Feb-17, Tuesday 12:03
bens_dad: (Default)
[personal profile] bens_dad
I wrote to the King, asking him not to visit the United States as part of their celebration of 250 years of independence from the UK and our monarchs.

I have had a reply.

Sadly it is marked "Private and Confidential" so I cannot tell you what it said.

I wasn't really hoping for a reply and the King now knows how I feel.
I will just have to hope that he does the right thing.

The only previous time I wrote to the Palace, the Queen was overtaken by events:
Boris resigned whilst I was at the post box !
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: 6792621c554719720fc25eba12b4ea612264cb73 https://github.com/dreamwidth/dreamwidth/commit/6792621c554719720fc25eba12b4ea612264cb73 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M bin/worker/ses-incoming-email M cgi-bin/DW/IncomingEmail.pm

Log Message:


Fix log levels in SES incoming email pipeline

  • Skip non-S3 action notifications at info level (expected duplicate from SNS action, not an error)
  • Empty email data is warn, not error
  • No support category match is info, not error (normal for non-support mail)

Co-Authored-By: Claude Opus 4.6 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: def63d7f03f190bc1a99d4fd648fa0f1424b6960 https://github.com/dreamwidth/dreamwidth/commit/def63d7f03f190bc1a99d4fd648fa0f1424b6960 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: A .github/workflows/tasks/worker-ses-incoming-email-service.json R .github/workflows/worker-build.yml R .github/workflows/worker-deploy.yml M .github/workflows/worker22-deploy.yml M config/update-workflows.py

Log Message:


Deprecate 18.04 workers

Also add deploy for new ses-incoming-email worker.

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: bba49ec2ee390e6882eda0b8004c6c57beacad9e https://github.com/dreamwidth/dreamwidth/commit/bba49ec2ee390e6882eda0b8004c6c57beacad9e Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: A bin/worker/ses-incoming-email A cgi-bin/DW/IncomingEmail.pm M cgi-bin/DW/Task/IncomingEmail.pm M config/workers.json A t/incoming-email.t

Log Message:


Add SES incoming email worker and shared processing pipeline

Extract email processing logic from DW::Task::IncomingEmail into DW::IncomingEmail so both the legacy TaskQueue worker and the new SES-based worker share the same pipeline. Remove obsolete spam filtering (subject heuristics, body checks, virus signatures, bounce detection) — SES handles this upstream now.

New components: - DW::IncomingEmail: shared processing (MIME parsing, hooks, post-by-email, alias forwarding with From-rewriting, support routing, multi-domain normalization via [profile] lj::INCOMING_EMAIL_DOMAINS) - bin/worker/ses-incoming-email: SQS-polling worker that receives SNS notifications from SES, fetches email from S3, checks SES spam/virus verdicts, and delegates to DW::IncomingEmail - t/incoming-email.t: tests for process flow, From-rewriting with per-sender SHA256 hash, and domain normalization

Co-Authored-By: Claude Opus 4.6 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: 09b2fa09012b1edc5f23883029cf12a5a045bcc4 https://github.com/dreamwidth/dreamwidth/commit/09b2fa09012b1edc5f23883029cf12a5a045bcc4 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M config/workers.json

Log Message:


Add SQS queue names, so we can target autoscaling to queue depth

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: e18e34f910eb489a5d0daa40f93e2024cff9bbc2 https://github.com/dreamwidth/dreamwidth/commit/e18e34f910eb489a5d0daa40f93e2024cff9bbc2 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M .github/workflows/ci.yml M t/plack-auth.t M t/plack-integration.t M t/plack-media.t M t/plack-subdomain.t M t/plack-sysban.t

Log Message:


Expand CI to run plack, cleaner, and routing tests

Rename the workflow to "CI (fast)" and add plack integration, text cleaner, and routing test steps. Fix pre-existing test failures caused by the rate-limiting middleware interfering with unrelated tests: mock DW::RateLimit, session resolution, sysban, and uniq cookie in tests that don't exercise those concerns. Fix routing mock in sysban and subdomain tests to return 0 (handled) instead of undef (which fell through to BML). Suppress 'used only once' warnings across plack test files.

Co-Authored-By: Claude Opus 4.6 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: 7f5a36ba49391219cb773eeb2ee5248be3b9ac09 https://github.com/dreamwidth/dreamwidth/commit/7f5a36ba49391219cb773eeb2ee5248be3b9ac09 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M cgi-bin/Plack/Middleware/DW/Auth.pm M t/plack-auth.t

Log Message:


Fix domain session cookie bounce not firing under Plack

When a user's domain session cookie is stale (e.g. after re-login gives them a new session ID), the Plack Auth middleware detected the mismatch and set the bounce URL but never actually redirected. The page would render as logged-out instead of bouncing through /misc/get_domain_session to refresh the cookie.

Add the redirect check to the Auth middleware's else branch so all Plack-served pages (journal views, controllers, etc.) get the bounce. Also fix pre-existing test failures in plack-auth.t where MockUser was missing the userid method needed by the RateLimit middleware.

Co-Authored-By: Claude Opus 4.6 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: 2c6ed3dd318302532b2c0133e45b97cd1c0b8a1d https://github.com/dreamwidth/dreamwidth/commit/2c6ed3dd318302532b2c0133e45b97cd1c0b8a1d Author: Mark Smith mark@dreamwidth.org Date: 2026-02-16 (Mon, 16 Feb 2026)

Changed paths: M config/workers.json

Log Message:


Update some worker knobs for autoscaling

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

April 2015

S M T W T F S
   1234
567891011
12131415 161718
19202122232425
2627282930  

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags