• 1 Post
  • 21 Comments
Joined 10 months ago
cake
Cake day: October 19th, 2025

help-circle








  • Distributed decision making, and these are all systems that are transactional or regulatory and not necessarily driving revenue / customer value.

    The IT / Systems team was told “stand up an SMTP server so we can send emails” and there’s no more discussion of capturing / trapping / dead boxes. And as an engineer if you start to add that scope, “why are you taking so long? I just need to send emails.”

    And then the delete account project is “GDRP says we need to delete accounts. So delete them in the least expensive way possible.” Which means, as an engineer, don’t spend a ton of time on this. In my previous company, we were still manually deleting accounts. As in SRE connected to the DB and ran a SQL command, by hand, with a piped in user ID.

    The notifications team is responsible for sending messages. Why do they care, or should be responsible for, identifying if a user is deleted? They’re responsible for maintaining the SPAM/unsubscribe list but not the user accounts.

    it’s distributed decision making, no one cross-cutting or thinking about these edge cases that impact multiple systems


  • The @deleteduser.com example is the easiest to explain

    A user, Bob, has an account and has attached his email address. Later, Bob says he wants to delete the account. For legitimate reasons, the company doesn’t want to delete all associated records (think, user generated content or user to user interactions that shouldn’t simply disappear. Or maybe audited transactions.)

    The company also doesn’t want to have those associated records pointing to nothing … maybe the schema doesn’t support that (eg required foreign key constraints) so it has to point to something

    So the company changes Bob’s account details. They delete his profile picture, his phone number, etc. but Name and Email are required by the database. Their deletion process changes Bob’s name to deleted_user and they change his email to deleted@deleteduser.com thinking that’s a dead domain that’ll never be valid to receive emails.

    Later, another process triggers an email. Someone sends Bob’s account a message, replies to a thread, etc. this process doesn’t know / care that Bob’s account was deleted so it fires the email to deleted@deleteduser.com

    There are a lot of problems with the decision making here, and there are better ways to handle all of this. But these are all rational decisions in the moment that can cause an email to be sent to an “invalid” email address











  • So much has been going on

    I moved recently and had to change ISPs. I went from 2 Gbps symmetrical fiber to 90/3 Mbps satellite behind CGNAT.

    Fastest place to get the WAN cable into the house was through the attic and into my guest room / office. But that caused some serious heat and noise issues.

    Ran some structural Cat6, installed new electrical outlet, put in some keystone jacks, wired a new patch panel, then moved the rack to the basement.

    Bought and installed a UPS which has already saved me twice in a month.

    Up speeds were too slow and the high latency to the satellite constellation was causing issues, so I spun up a small VPS. But that means I have to sync content back to my local.

    I’ve been wrestling with rsync for over a month… fiddling with flags to get the best results. I think I finally settled on a config yesterday and the service and timer are working well

    CGNAT is messing with remote access, so I set up cloudflare tunnels. But the tunneling is not well suited for streaming. I was only getting ~100 Kbps on remote connections. Ran some iperf3 testing over tailscale and was slightly better.

    My preferred audiobook app Prologue released a major update to v4.0 which broke Plex libraries on launch, so I had to quickly pivot to AudioBookShelf.

    To achieve remote streaming and access for Prologue, I had to explain Tailscale set up and create new user accounts. Only halfway through my user base. Not looking forward to explaining it to my parents

    Finally, I’m trying to set up Claude to run on my server rather than my locked down enterprise laptop. That’ll allow more tooling access like git rather than before when I was spending a lot of time downloading and uploading files manually. I need to figure out how to keep my session open. I’ll probably run tmux inside a docker container then run claude inside the tmux window. Hopefully that works