Gaming
2026-03-19 12:19 am20 Awesome Video Games Made by Women -- Punished Backlog
Games Designed by Women -- American Library Association
Good Games Designed by Women -- Board Game Geek
Tabletop Tuesday: RPGs Designed by Women -- Pop Culture Uncovered
Tutorials
2026-03-19 12:15 amPerforming some traffic maintenance today
2026-03-14 01:04 pmHappy 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.
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)
- Remove dead utf8convert links and handle invalid UTF-8 in profiles
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.
- Add LJ::clean_utf8() to LJ::TextUtil
- Clean name/bio on load in profile and create controllers
- Remove text_in/is_utf8 conditionals from profile.tt and setup.tt
- Remove name_absent/bio_absent hidden input fallback logic
- Mark dead translation strings in deadphrases.dat
- Add 16 regression tests for text_in, text_trim, and clean_utf8
Fixes #1894
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
- Add tests for undef input and 4-byte UTF-8 (emoji) in clean_utf8
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
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 11c40353c19cc0d986a932efe41668023117b3c6 https://github.com/dreamwidth/dreamwidth/commit/11c40353c19cc0d986a932efe41668023117b3c6 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-11 (Wed, 11 Mar 2026)
Changed paths: M cgi-bin/LJ/SynSuck.pm M cgi-bin/ljlib.pl
Log Message:
Fix feed fetching on Ubuntu 22.04+ and reduce backoff aggressiveness
Force HTTP/1.1 via SSL_alpn_protocols in LJ::get_useragent. LWP does not support HTTP/2, but IO::Socket::SSL on 22.04+ advertises h2 via ALPN by default, causing servers like Tumblr to respond with HTTP/2 which LWP can't parse ("500 Server closed connection").
Also reduce exponential backoff cap from 30 days to 48 hours (max multiplier 2^4=16 instead of 2^7=128) and replace fixed 0-4 minute jitter with proportional jitter (up to 10% of delay) so retries stagger more effectively.
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
Question thread #149
2026-03-11 01:39 amThe rules:
- You may ask any dev-related question you have in a comment. (It doesn't even need to be about Dreamwidth, although if it involves a language/library/framework/database Dreamwidth doesn't use, you will probably get answers pointing that out and suggesting a better place to ask.)
- You may also answer any question, using the guidelines given in To Answer, Or Not To Answer and in this comment thread.
[dreamwidth/dreamwidth] a7c872: Build JS for ES6, not ES2020 (#3532)
2026-03-10 05:42 pmBranch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: a7c872c2e9a9286da62970e298ad04106c860b90 https://github.com/dreamwidth/dreamwidth/commit/a7c872c2e9a9286da62970e298ad04106c860b90 Author: momijizukamori momijizukamori+bugzilla@gmail.com Date: 2026-03-10 (Tue, 10 Mar 2026)
Changed paths: M bin/build-static-modern.sh
Log Message:
Build JS for ES6, not ES2020 (#3532)
Co-authored-by: Cocoa momijizukamori@gmail.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: 7e2581ef4c63b5fd84be3771093348bb9b65fded https://github.com/dreamwidth/dreamwidth/commit/7e2581ef4c63b5fd84be3771093348bb9b65fded Author: Mark Smith mark@dreamwidth.org Date: 2026-03-09 (Mon, 09 Mar 2026)
Changed paths: M cgi-bin/DW/Request/Plack.pm M t/plack-request.t
Log Message:
Fix Plack print() dropping all arguments after the first
DW::Request::Plack::print() only captured $_[1], silently discarding any subsequent arguments. This broke callers that pass multiple args — notably DW::Controller::Interface::Flat which uses $r->print($key, "\n", $val, "\n"), causing the flat client protocol to return keys with no newlines or values.
The Apache2 implementation correctly forwards all args via $self->{r}->print(@). Match that behavior by joining @ before appending to the response body.
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