2026 Disneyland Trip #14 (3/14/26)
Mar. 14th, 2026 22:38( Read more... )

Happy Saturday!
I'm going to be doing a little maintenance today. It will likely cause a tiny interruption of service (specifically for www.dreamwidth.org) on the order of 2-3 minutes while some settings propagate. If you're on a journal page, that should still work throughout!
If it doesn't work, the rollback plan is pretty quick, I'm just toggling a setting on how traffic gets to the site. I'll update this post if something goes wrong, but don't anticipate any interruption to be longer than 10 minutes even in a rollback situation.

Which of these look interesting?
The Lion and the Deathless Dark by Carissa Broadbent (July 2026)
4 (13.3%)
Teach Me to Prey by Jenni Howell (December 2026)
0 (0.0%)
Heart of Thieves by Jessica S. Olson (September 2026)
0 (0.0%)
The Dagger in Vichy by Alastair Reynolds (October 2025)
12 (40.0%)
Crows and Silences by Lucius Shepard (December 2024)
10 (33.3%)
Engines of Reason by Adrian Tchaikovsky (September 2026)
13 (43.3%)
The Heart of the Reproach by Adrian Tchaikovsky (July 2025)
11 (36.7%)
Some other option (see comments)
0 (0.0%)
Cats!
22 (73.3%)

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: badf5eae7a944fed8e8381ee3dff2238633191c6 https://github.com/dreamwidth/dreamwidth/commit/badf5eae7a944fed8e8381ee3dff2238633191c6 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-13 (Fri, 13 Mar 2026)
Changed paths: M etc/docker/web22/Dockerfile M etc/docker/web22/config/etc/varnish/dreamwidth.vcl M etc/docker/web22/scripts/startup-prod.sh
Log Message:
Replace Apache with Starman behind Varnish on web22
Varnish now forwards to Starman on port 8080 instead of Apache on port 80. This removes Apache from the web22 request path entirely, with Varnish's caching layer helping absorb health check traffic that previously queued behind busy Starman workers.
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


Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 4b5bcf8ad5cda83928da05e87508127b1fdd3a46 https://github.com/dreamwidth/dreamwidth/commit/4b5bcf8ad5cda83928da05e87508127b1fdd3a46 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)
Changed paths: M app.psgi A cgi-bin/Plack/Middleware/DW/WriteTimeout.pm A t/plack-write-timeout.t
Log Message:
Add SO_SNDTIMEO middleware to prevent Starman workers blocking on dead connections
When the ALB closes a connection before Starman finishes writing a response (e.g. due to idle timeout), the worker's write() blocks for 15-30 minutes waiting for TCP retransmits to exhaust. With 10 workers, this quickly deadlocks the entire server.
The new DW::WriteTimeout middleware sets SO_SNDTIMEO on the client socket via psgix.io so that blocked writes fail in seconds instead of minutes, freeing the worker to handle new requests.
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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 64b109f6fdd36a9130ef4a90057e71e07be5ec86 https://github.com/dreamwidth/dreamwidth/commit/64b109f6fdd36a9130ef4a90057e71e07be5ec86 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)
Changed paths: M bin/upgrading/deadphrases.dat M cgi-bin/DW/Controller/Create.pm M cgi-bin/DW/Controller/Manage/Profile.pm M cgi-bin/LJ/TextUtil.pm M t/plack-request.t M t/textutil.t M views/create/setup.tt M views/manage/profile.tt M views/manage/profile.tt.text
Log Message:
Remove dead utf8convert links, handle invalid UTF-8 in profiles (#3535)
The utf8convert page was removed years ago, but the profile editing and account creation pages still linked to it when a user's name or bio contained invalid UTF-8. This left users unable to edit those fields at all.
Instead of hiding fields behind a dead link, clean invalid UTF-8 byte sequences on load using a new LJ::clean_utf8() utility function. This strips broken sequences while preserving valid multi-byte characters, so the edit fields are always shown.
Fixes #1894
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Cover edge cases: undef returns empty string, emoji (4-byte sequences) are preserved, and truncated 4-byte sequences are properly stripped while preserving valid preceding characters.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 453fa0142c344ae33d3d208067f110e33d7d48d5 https://github.com/dreamwidth/dreamwidth/commit/453fa0142c344ae33d3d208067f110e33d7d48d5 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)
Changed paths: M src/dwtool/internal/ui/app.go M src/dwtool/internal/ui/logs.go
Log Message:
Update dwtool log filtering to be more useful
To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications