You know it because you write the content of AGENTS.md. And if you are smart, you keep it brief and cover only the important things that anyone (human OR LLM) would want to know if working in this directory.
In my experience telling it what I want is not a reliable process at all whatsoever if what I'm asking for is sufficiently complex, no matter what context I provide. So instead I break tasks down into very small parts, ask for solutions to those that I can reasonably quickly assess and then put them together myself. Asking it to do the architectural or deep algorithmic legwork IME wastes so much time and is often just wrong.
There's a balance to be found here, that's unfortunately very hard to find at times.
In my experience, there are two classes of tasks: some are very "in-distribution", and for those LLMs can near-flawlessly perform the "architectural or deep algorithmic legwork", with maybe a single second round to fix the mistakes. For others, I have to break the tasks down myself, and often it's a "death through thousand papercuts", because the size of a task that I can quickly verify and the LLM will not screw up with > 50% probability is small enough that it's sometimes net negative time spent relative to doing it myself (and using LLMs only as glorified search engine and article summarizer).
I like to tell myself that I'm getting better at recognizing these two classes up front, but I'm still frequently surprised when "type 1" turns out to be "type 2".
But circling back to the main topic: with "type 2", agent instructions are paramount, if only to enforce the "small steps, pre-commit to scope and methodology, verification at the end, user doesn't even want to know about anything in between" rules, as agents naturally want to run ahead faster than I can keep up with.
A good practice to use (ime) is having it do research for the larger task, propose alternatives, and write that in a file. You can then review and comment that up, go through another iteration.
Then when it comes to implementation time, things typically go much smoother for larger changesets. Be wary to not overplan, as we all know how often we realized we missed something once we get into the details. Here, I stop the session and go back to iterating on the design/plan doc. Not a step-by-step guide, if you don't instruct them to the difference, they will just pseudo-implement in the plan like they do in their thinking traces, need to be be explicit about the level of detail.
this is probably outdated, attention typically stays fine up to ~200k tokens these days
you end up clouding that more with an agent having to re-understand concepts or conventions
AGENTS.md is good when it is a nested sparknotes for the project, you save context and turns overall, but keep them minimal and largely gotchyas or unusual workflows in your repo
They only mention it in passing, but I think it's mainly just the default tool call (which isn't wget, it's a built-in thing in the harness) just throwing off Claude's habits a bit (and not always just downloading the file).
> the point of Pin is to wrap types that CAN move.
I would highlight that there are many cases where you CAN move an object safely until a certain operation requires the object to "stay put" in place.
Pin allows for that by tying the object to the place only when required. That's why Pin relates to both the object and the place.
Meanwhile, !Move types can't ever move. The object has to remain in the inital place it was constructed in. !Move requires in-place construction and emplacement to be ergonomic at all.
> I would highlight that there are many cases where you CAN move an object safely until a certain operation requires the object to "stay put" in place.
You could model this with a state machine enum where the "stay put" phase is a variant that accepts a !Move, like so:
Stupid question, can't this trivially be solved by having a movable constructor / builder type that then gets turned into a non-movable type when built?
Sure, thats one reason why IntoFuture and Future exist. Imo, in hindsight this is also main mistake in aysnc Rust: The whole async system should be build around IntoFuture rather than Future (async fn should return impl IntoFuture).
That way you could pass around IntoFutures without being affected by auto traits leaking. Only when you actually call .await() or .poll() would the immovable Future materialize.
You're right that this is an important issue. I wrote a post explaining this in some detail, so at the very least we avoid having the same problem with generator functions:
Oh yeah, I've read about all your blog post on this topic :)
To dump some ideas on you:
I think one missing piece might be that FnOnce() -> impl Future should implement IntoFuture. Async runtimes would then use IntoFuture in their APIs agressively.
I call this a "workload blueprint" at work. Its a closure/type that contains all the info to start the workload, but in a minimal form. In Rust terms this would be a buildprint that is ideally Send + Move + Forget + 'static, even if the actual work (and the backing struct of the Future) is !Send (e.g. It holds an Rc across await points).
Runtimes could use this for their advantage: There would be a global pool of "workload blueprint" that can be stolen by any executer thread, but once a !Send workload has started on one thread it can't be migrated to another.
I guess `!Move` is largely equivalent to `Unpin` for the purposes of `Pin`, so for example Pin's safe constructor `Pin::new()` can be re-expressed in terms of `!Move` instead of `Unpin`. Today you need unsafe code to pin a `!Unpin` (i.e. "movable") type.
But I also suspect there are important differences between `!Move` and `Unpin` that I'm not sure about.
This whole thread summarizes what's wrong with Pin: it's so confusing everyone in here got something wrong. (Just to address your mistake in particular Unpin is almost the opposite of !Move: it's the trait that represents things that can be un-pinned, that is: moved despite having been pinned. See https://doc.rust-lang.org/std/pin/index.html#unpin).
The healthcare system in the United States is deeply, horribly broken.
Recently, my wife was going to be out of the country about a week-and-a-half. Her prescription for a medicine to manage arthritis would run out at the very beginning of that time. But insurance company policies refused to allow her to fill it even a little bit early. As a result, her only option was to go without the medicine for several days.
Policies should be set by organizations whose primary goal is to provide effective health solutions, not organizations whose primary goal is to minimize costs in order to make a profit.
She could've gone to her provider to discuss adverse side effects. Sometimes they will prescribe a new medication that could be filled immediately.
She could've got a pill cutter and cut the tablets in half, or space out the doses, or otherwise take less than the specified dose for a few weeks.
She could've asked the pharmacist about OTC treatments which could be safely substituted during the gap time.
She could've gone to the emergency room or urgent care in the destination country, and tell the provider "I have run out of medication!" This would be covered by the traveller's insurance that you purchased for the trip.
You sound like you would be a great patient advocate. His wife would have been lucky to have someone like you help navigate that situation, but it would be even better if people didn't need to waste their brainpower coming up with these tips and tricks to work around this fucked up adversarial system in the first place.
This is not a "these days" thing. Most rights essentially being abrogated at the border is a thing we've had for many decades now. In particular, no non-citizen has the absolute right of entry, and border agents have discretion bordering on insane when it comes to not admitting people or temporarily detaining them. Worse yet, this being the case, the job attracts the kind of people who relish the petty power trip. I've seen this many times back in 2010-2011 when I was traveling regularly as a non-citizen between US and Canada.
What gives US americans the right to deny anyone access to the land they stole from the indigenous they genocided? Why do people think they are entitled to take other peoples land and then prevent others from coming too?
What gives the Turks the right to land they stole from the Tatars? What gives the Greeks the right to land they stole from the Creteans? What gives the Chinese the right to land they stole from the other Chinese?
At some point, we have to accept that the world has irrevocably changed, that people have lived where they live for generations, that resettling them all is impractical, inhumane and just not a good idea in general, and just move on and build the best world for the people currently here.
During WW1 and then again during WW2, the world has agreed to the right of self-determination. If people feel they're a certain nationality separate from what their government imposes on them, then they have a right to become their own country with their own laws and their own border enforcement. If you are literally asking what gives Americans the right to prevent others from coming, this is it.
I wasn't (until reading this thread) aware of the deletion policy, so I certainly couldn't have discovered where the configurable setting is and adjusted it.
Yes, it is American exceptionalism (and quite foolish) to make the claim that "This could never happen in the US".
No, the American government is NOT more authoritative than the UK in the way they handle freedom of websites. The grandparent comment is correct: the US government does not (currently) order ISPs to block specific websites.
Yes, those in the US should protest the current government (many of us already are doing so).
I think maybe there is more than one way to quantify authoritative.
Just looking at the percentage of the population in prison, or murders by cop per inhabitant, that are also good indicators of "repression", and the US might rate first worldwide.
Sorry OPs first sentence mentions this is basically impossible in the US and then compared to EU or UK. There is a certain tone and I don't think this comment was a good faith criticism on EU or UK policy
The "mistake" was not in providing a way to represent "no data", it was in providing no way to represent "this definitely HAS" data.
Languages that correct the problem have two separate types (eg: Foo & Option<Foo>) meaning "definitely a Foo" and "a Foo but it might have no data". Java just has Foo, meaning "a Foo but it might have no data" but no way to represent "definitely a Foo".
reply