foo42
Joined 11 years ago
Joined 11 years ago
For now at least, I'd say churning code faster and faster cannot widen either of these bottlenecks much.
Today, I use Claude heavily, but review all the code. I'm faster, but not by the multiples people speak of. And that seems ok to me.
More likely, they feel they would disproportionately bear the costs, while the benefits either trickle down diffusely from the wider societal good, or worse, accrue to some private company.
For example you may feel AI is progress, they may feel the loss of the countryside near their house to a data centre, which they may believe will primarily benefit the owners of OpenAI et al. In such a case, their opposition would be aligned with their beliefs and values.
Other trebuchet fans who dream of building one some day may be interested in googling "walking trebuchet" for a surprisingly high complexity/results ratio.
As I say most of these I never publish as I'm mainly using writing as a vehicle for thought, but when I do I'm never sure how to flag them. I don't want (imaginary, lets be honest) readers thinking I'm deluded into thinking I've found something new. I want to come up with a tag I can put on them which adds a pithy disclaimer card at the top or something so I feel more comfortable publishing them.
I've been experimenting with dedicated Linux users for various external tools with access to the relevant credentials limited to them and the Claude user only able to invoke the relevant clis by going through a pair of wrapper scripts: the first to change user to call the second via a su call as the appropriate user, the second wrapper to invoke a guard script which allows me to implement my own in-code permissions checks against the cli arguments. In _theory_ there's no way for Claude to work around it, as the sudoers file only permits the described manner to change to the user with credentials, and the user with permissions for each credential only ever runs deterministic code.
It's too early days to say how well this second part works out, but so far so good.
As for how useful it is to understand thins, I believe it's still useful and hope it will continue to be.
How ergonomic this is will vary by language, but the general idea would be to apply the assertion logic in some sort of constructor, then prevent any operations which would break the invariant going forward. The simplest way to protect this being by making the value immutable where possible.
Users of the value who care about the invariant being true can then specify in their types that they want a non-empty-collection or a foo-id or whatever it may be, rather than asking for the wider type, then asserting.
I'm generally an immutable first, type developer but ive not had to do much schema design for a while and looking back to previous attempts we never hit scale to stress test my approaches.
Apparently the RMS prefix on the RMS Titanic stands for "royal mail steamer" as it was authorised to carry the post.