Internet Archive feels like an important... well, archive, yet I often worry about the load, financial and potentially political, which is put on it when people use it as a workaround for pay-walls, as is often advocated on HN
The archive that bypasses paywalls is archive.today (or archive.is, archive.ph, ...) which is run by some shady person, not a professional organization like Wayback Machine.
Other trebuchet fans who dream of building one some day may be interested in googling "walking trebuchet" for a surprisingly high complexity/results ratio.
Every time I see a strandbeest[1] on the beach somewhere, I wonder to myself why it hasn't got an array of trebuchet included, also recharged by the wind, to pick up sand balls and throw at people.
Perhaps tangential to your point, but I often write blog posts (although finish and publish far fewer than I start) where I write about something as it has occurred to me, informed by things I've absorbed no doubt, but without specific research. In such cases I explicitly avoid searching out prior work as a) seeing that something is well discussed and explored can take away the motivation to explore (in the same way reading puzzle solutions before starting might), and b) to avoid having green shoots of ideas shaped by the current of existing consensus. Now that doesn't mean I don't come back after doing my own thinking to see what the more well developed literature of people cleverer than me, who've thought far longer than me think; I just don't want to snuff out my own exploration at the start.
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 recently been running yolo mode, but in docker container with the codebase I'm working on a as regular mount with other reference code mounted as read only.
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.
I've been using them by reading some docs/wiki/tutorial, then when I think I understand something trying to do a rough explanation to the LLM and ask if I'm right. I'm usually making some analogy to something I already understand a little. I'm usually partially right but missing some key bits at the first pass. I go back and forward asking for explanations of various bits or asking for resources around the area I'm not understanding. Often times just discovering the relevant name for the area of study opens lots of doors. I basically use it like I would talk to a knowledgeable and patient teacher.
As for how useful it is to understand thins, I believe it's still useful and hope it will continue to be.
An overlapping technique (covering some but not all of the circumstances you'd use assert) is to take a parse-dont-validate approach, and essentially encode the fact that an assertion has been applied to a value in its type.
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 not sure exactly what languages people think of when they consider asserting, but I presume it's Java, C# or C/C++. In Java asserts are disabled by default, so they're thought of as a debug/development utility.
I think people might be worried of asserting in production because "what if you hit an edge case in production that you haven't accounted for, and the system crashes?" And I either think "You just don't test enough", or "Parse, Don't Validate (rather than assert), report a problem and continue."
> Users of the value who care about the invariant being true can then specify in their types that they want
Now that C# has value types and Java has record classes, this kind of data modelling has become available in mainstream systems languages. I'm not a C++ shark, but I think the closest equivalent is C++20 aggregate structs.
I would say the killer features are records and pattern matching.
Sealed interfaces/classes seem to mostly compensate for hypermobility caused by inheritance (that you can modify a superclass'es behavior and break abstraction boundaries).
Stop relying on inheritance, and you don't really need sealed interfaces.
Using records and thus lowering mutable state makes the problem of breaking abstraction boundaries lesser as well.
This is a hot take paid for by the functional programming lobby.
I agree, although I think the real goal the model providers are going for (both commercial _and_ open weight) is probably power. Just think of the control available to the organisation training the models politicians, business leaders, and citizens are increasingly delegating their thinking to.
reply