Sure. Highly successful even, I would say. I can deliver to Microsoft and Google.
Not sure though what the magic ingredient is. I've had the IP address for 7 years before I decided to use it for mail, after one quick mail to Cisco's Talos stuff everything was fine. Software is Mailcow. Hosted at Hetzner in Germany.
And still, I cannot deliver to T-Online, so there's that.
Oh nice, that's good to know. Yes, those clones sites are also instantly on my block list, as well as Userbenchmark, sites with AI-generated "info" pages (if I want AI answers, I'll just ask ChatGPT), sites that won't work without third-part cookies, low-quality game guide sites that were evidently made for users to visit, but not actually to help them, etc.
Thank you for this article! It was way richer than others, with some actionable advice.
I guess I'll finally try Claude Code, need to get a burner SIM first though… I cannot for the life of me understand why I can just sign up for the API yet must give a mobile phone number for the product.
I mean, I'm pretty sure it would be trivial to tell it to move files to the trash instead of deleting them. Honestly, I thought that on Windows and Mac, the default is to move files to the trash unless you explicitly say to permanently delete them.
Yes, it is (relatively, [1]) trivial. However, even though it is the shell default (Finder, Windows Explorer, whatever Linux file manager), it is not the operating system default. If you call unlink or DeleteFile or use a utility that does (like rm), the file isn’t going to trash.
Everything on a ZFS/BTRFS partition with snapshots every minute/hour/day? I suppose depending on what level of access the AI has it could wipe that too but seems like there's probably a way to make this work.
I guess it depends on what its goals at the time are. And access controls.
May just trash some extra files due to a fuzzy prompt, may go full psychotic and decide to self destruct while looping "I've been a bad Claude" and intentionally delete everything or the partitions to "limit the damage".
A "revert filesystem state to x time" button doesn't seem that hard to use. I'm imagining this as a potential near-term future product implementation, not a home-brewed DIY solution.
A filesystemt state in time is VERY complicated to use, if you are reverting the whole filesystem. A granular per-file revert should not be that complicated, but it needs to be surfaced easily in the UI and people need to know aout it (in the case of Cowork I would expect the agent to use it as part of its job, so transparent to the user)
Doesn't matter though. Every single one of these "casual" users I know has a terribly outdated device with a broken battery that doesn't even charge anymore.
Doing it like this (or preferably with a custom exception) translates the technical problem into a domain problem. Without doing this, callers can't properly handle it. FormatException or OverflowException could be thrown at multiple locations, not just in parsing the user ID. This here is an InvalidUserIdException. It could be derived from ArgumentException, but IMHO InvalidOperationException is not appropriate.
Translating into a custom exception is the way to go here. Bubbling up exceptions from your abstractions is fine for development but not a good experience for users of your API.
I would rather see custom exceptions thrown than rethrowing.
You're right that domain specific exceptions would be much better.
As an aside, generating domain specific exceptions is precisely the kind of busywork that traditionally it is hard to find motivation to do but that LLMs excel at.
Code snippets in IDEs like Visual Studio and refactoring tools like Resharper offer shortcut accessible auto generation of those kinds of entities with deterministic results. They also have routines to extract and move entities to their own files afterwards in a keyboard based workflow.
They are far less work than a prompt, faster, can be shared in the project or team, and are guarantee-able to confirm to coding standards, logging specifics and desired inheritance chain for your root domain exception. It works on-prem, offline, for zero tokens.
I mean, at least on modern C#, it could be as simple as
public class UserIdInvalidException(Exception innerException) : Exception("Invalid User ID", innerException);
Even easier than most data objects you’d have to define anyway. And then, Exceptions are part of the contract. I’d rather not have an LLM write that up, but that’s just personal preference.
At the station itself, on the other hand, you might as well play "delay bingo". Is it an earlier training running late that is now slowing down other trains? Is it yet another Stellwerksstörung? Or maybe it's urgent track repairs? It might also be an Oberleitungsschaden!
To be honest, I don't care about excuses. Yes, problems happen, but this is systemic. Does it help me if I know the train tracks are broken yet again? It does not. The reasons (excuses) they bring up ring hollow. I don't feel that drivers or station staff would appear stupid if they don't tell. They are victims, too.
Not sure though what the magic ingredient is. I've had the IP address for 7 years before I decided to use it for mail, after one quick mail to Cisco's Talos stuff everything was fine. Software is Mailcow. Hosted at Hetzner in Germany.
And still, I cannot deliver to T-Online, so there's that.
reply