Ayende @ Rahienhttps://ayende.com/blog/Ayende @ RahienCopyright (C) Ayende Rahien 2004 - 2021 (c) 202660Barth Benner commented on The 'Million AI Monkeys' Hypothesis & Real-World ProjectsIt is no longer a skill.
Soon we will all accept it.
We can all now create great software. All the outstanding developers are saying it.https://ayende.com/blog/203907-B/the-million-ai-monkeys-hypothesis-real-world-projects#comment2https://ayende.com/blog/203907-B/the-million-ai-monkeys-hypothesis-real-world-projects#comment2Fri, 03 Apr 2026 22:23:00 GMTOren Eini commented on A tale of one-off, coding agents and the shortest path to victoryRustam,
Yes, you can do that with `slackdump`, sure. I literally couldn't get the auth to work properly.
Now, I *could* make it work, for sure. But it was literally easier to get an agent to produce a once off then try to figure out how to get `slackdump` auth working properly.
That's the point of this post.https://ayende.com/blog/203811-A/a-tale-of-one-off-coding-agents-and-the-shortest-path-to-victory#comment2https://ayende.com/blog/203811-A/a-tale-of-one-off-coding-agents-and-the-shortest-path-to-victory#comment2Sun, 15 Feb 2026 06:48:52 GMTRustam commented on A tale of one-off, coding agents and the shortest path to victoryIt's quite easy with slackdump:
1. Run a dump of a channel: slackdump dump <CHANNEL_ID>
- produces a zip file with the timestamp, i.e. slackdump_20250214_143900.zip.
2. Format as csv: slackdump format slackdump_20250214_143900.zip
- produces a zip file with two CSV files: conversation and channel information.
All the best.https://ayende.com/blog/203811-A/a-tale-of-one-off-coding-agents-and-the-shortest-path-to-victory#comment1https://ayende.com/blog/203811-A/a-tale-of-one-off-coding-agents-and-the-shortest-path-to-victory#comment1Sat, 14 Feb 2026 04:42:50 GMTNicholas Piasecki commented on Maintainability in the age of coding agentsAs someone reading you for a long time and maintaining his own 15 year old code base, on a much smaller scale, I also came to the conclusion that it succeeded only because I got the architecture mostly correct — of course the topography is all obsolete now, but the fault lines were right — in that changes and evolution were localized, and I could change and deploy just a small part of the system at a time.
This was a great essay. https://ayende.com/blog/203779-A/maintainability-in-the-age-of-coding-agents#comment1https://ayende.com/blog/203779-A/maintainability-in-the-age-of-coding-agents#comment1Sat, 31 Jan 2026 02:29:55 GMTOren Eini commented on Implementing Agentic Reminders in RavenDBPeter,
That actually comes from a bunch of reasons.
- `@refresh` - is easier to just type then provide a strongly typed API for.- We have to consider cross language API. C# has really nice facilities for strongly typed stuff (but they are complex). With Python / node.js, that is not the case- `smartest-agent` or `GetRaisedReminders` are defined by the user. Sure, we can go the same route we did with indexes, with defining a class, etc.
That comes back to the previous point about other systems, and reducing the cost of approaching this in all platforms.https://ayende.com/blog/203523-C/implementing-agentic-reminders-in-ravendb#comment2https://ayende.com/blog/203523-C/implementing-agentic-reminders-in-ravendb#comment2Fri, 12 Dec 2025 07:41:40 GMTpeter commented on Implementing Agentic Reminders in RavenDBcurious why literal strings are used (@refresh, smartest-agent, GetRaisedReminders etc).
Is there no simple way to use stringly-typed variables?https://ayende.com/blog/203523-C/implementing-agentic-reminders-in-ravendb#comment1https://ayende.com/blog/203523-C/implementing-agentic-reminders-in-ravendb#comment1Thu, 11 Dec 2025 16:06:01 GMTRay Kwei commented on Using multi-staged actions with AI Agents to reduce costs & timeOren - software investor at Radian Capital - just shot you an email. Thought I might try reaching out through the blog! https://ayende.com/blog/203430-C/using-multi-staged-actions-with-ai-agents-to-reduce-costs-time#comment1https://ayende.com/blog/203430-C/using-multi-staged-actions-with-ai-agents-to-reduce-costs-time#comment1Mon, 24 Nov 2025 21:48:19 GMTOren Eini commented on RavenDB's new officesJudah,
Would be very happy to host you, let us knowhttps://ayende.com/blog/203395-C/ravendbs-new-offices#comment4https://ayende.com/blog/203395-C/ravendbs-new-offices#comment4Wed, 29 Oct 2025 21:17:32 GMTJudah Gabriel Himango commented on RavenDB's new officesLooks great, Oren! Congrats on the growth and the new building. I'll have to stop by next time I'm in Israel.https://ayende.com/blog/203395-C/ravendbs-new-offices#comment3https://ayende.com/blog/203395-C/ravendbs-new-offices#comment3Wed, 29 Oct 2025 21:14:25 GMTeqr commented on RavenDB's new officesIt's so cool, congrats. The logo is awesome. https://ayende.com/blog/203395-C/ravendbs-new-offices#comment1https://ayende.com/blog/203395-C/ravendbs-new-offices#comment1Thu, 23 Oct 2025 14:50:21 GMTOren Eini commented on A deep dive into RavenDB's AI AgentsJason,
That is a great point, yes.
I wrote about this recently in depth, see: https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept?key=45fe4f251b4a41f9b4df1a8dbb2dcdb5
https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment4https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment4Wed, 08 Oct 2025 20:17:05 GMTJason Parkhurst commented on A deep dive into RavenDB's AI AgentsWhat are you doing to defend against prompt injections in the data stored in the database? If the agent takes the data from the database as an input, it is now subject to misinterpreting it, and if you have any user controlled data in the database it could be malicious.https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment3https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment3Wed, 08 Oct 2025 16:24:48 GMTOren Eini commented on A deep dive into RavenDB's AI AgentsBob,
This is available in the cloud in the dev environment, and on either the higher ended tiers (P30+) or as an addonhttps://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment2https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment2Mon, 15 Sep 2025 06:58:19 GMTBob Lamb commented on A deep dive into RavenDB's AI AgentsVery interesting. Is this available in the RavenDB cloud on the free tier? If not, on which tier is it available?https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment1https://ayende.com/blog/203141-A/a-deep-dive-into-ravendbs-ai-agents#comment1Fri, 12 Sep 2025 11:44:08 GMTOren Eini commented on AI Agents Security: The on-behalf-of conceptJason,
a) You are broadly correct - anything that you expose to the agent, you should be concerned about it affecting it.
b) That is limited by what _actions_ the agent can direct (which is distinct than take).
c) We'll soon offer the ability to "nest" agents, to the point that you can have a split between "filter the no overheat" query from the "recommend the best value" agent.
Finally - at the end of the day, we are still dealing with a technology that has no actual control / data plane difference.
In SQL - that is like not having parameters and hopsing that `replace("'", "''")` would protect you.
Going back to point (c) above - the agent isn't free to do whatever it wants, it must go through the available actions you provide to it. And then you have a chance to add validation, etc.
For example, if you are an under 18 customer, and try to buy alcohol. It isn't the LLM that is supposed to stop you, but the validation on the "AddToCart".https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment67https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment67Thu, 09 Oct 2025 15:21:29 GMTJason Parkhurst commented on AI Agents Security: The on-behalf-of conceptIf you allow the agent to see any content generated by any other user, the agent can be hijacked. For example in an e-commerce setting letting the agent see reviews left by other customers or product descriptions from shady 3rd party marketers can cause your website to take unintended actions on the users behalf.
This is similar to a xss attack.
If you maintain the state of the agent during a session or longer you have made it a persistent exploit vector.
Limiting the agent to only see what the user can see seems insufficient.
The key thing here is that *anything* the agent sees is a vector. Folks will naturally want their agents to see what they see, so I expect teams will open up these vectors. Things like: "List only the drills with no complaints about overheating" seem tailor made for LLMs. Listing them would be fine as a one shot, but then if you use the same session for other things like account management or modifying your cart you're wide open.
While you may be able to defend system integrity, you're opening yourself up to legal liability.https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment66https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment66Thu, 09 Oct 2025 15:11:04 GMTHenry Rollins commented on AI Agents Security: The on-behalf-of conceptAh, yes. Thanks, protecting the user versus protecting the system is a great distinction. For protecting the system, you're right, the harm an unwary user could do would remain limited in most scenarios. I do still worry about scenarios where the user is inside the system, where an agent acting on behalf of an unwary user would have broader scope. Say, a bank representative, HR department, developer just granted just-in-time access to prod, etc. https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment8https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment8Mon, 08 Sep 2025 14:57:20 GMTOren Eini commented on AI Agents Security: The on-behalf-of conceptHenry,
You are correct, in that you still have security issues, but there is a whole different level of that.
If I tell you to run: `eval(atob("YWxlcnQoJ3B3bmVkJyk="));` on your end, and you do that... you are in the same situation.
The key here is whether this is a _user_ risk or a _system_ risk.
Because those need to be addressed very differently. An agent acting on-behalf-of the user is limited to what it can do. If the user misbehaves, that is a problem, but well scoped.
In the real world, consider the grandma getting a call saying from a supposed grandson: "I need to pay bail with gift cards, and it needs to be NOW".
That _is_ a problem, but it is not a problem for the bank.
On the other hand, if I were able to do the same thing to the bank's _teller_, it's a whole different ball game. https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment2https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment2Sat, 06 Sep 2025 06:49:12 GMTHenry Rollins commented on AI Agents Security: The on-behalf-of concept"There is no damage the agent can cause that the user cannot also cause on their own." I agree with this point, but we need to keep in mind the next level of exploits, and recognize that there is damage the agent can cause that the user would not cause on their own.
Case in point, GitHub Copilot executes commands in the user's terminal, and can thus be instructed to do anything the user could do... which becomes very problematic [when it can also bypass human approval safeguards](https://embracethered.com/blog/posts/2025/github-copilot-remote-code-execution-via-prompt-injection/). Fortunately, that particular exploit has been patched. Unfortunately, we have absolutely no reason to trust that we're safe from any number of others.
Now in your example scenario, there is no terminal in play, but I'd say we still have trouble. Say a bad actor shares what appears to be a very helpful prompt, but they have performed similar exploits to hide extra instructions (e.g., buy e-gift cards and send them to the bad actor). Users throw these prompts into the system and of course they have permissions to make purchases on their own behalf. Or leave the bad actor out of it, and accept the reality that a non-deterministic lexical pattern engine may occassionally get a wild idea that the user wants to increase their automatic monthly contribution by 10x. Now we have to build another layer of guardrails around how far the agent can go, even on behalf of the user.https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment1https://ayende.com/blog/203140-A/ai-agents-security-the-on-behalf-of-concept#comment1Fri, 05 Sep 2025 22:42:50 GMTdesign collaboration commented on The role of junior developers in the world of LLMsThis is pure gold ������! As a creative professional, I value
the actionable guidance you've provided. The part about
layout principles was particularly helpful. Saved for my team!
������https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment51https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment51Fri, 14 Nov 2025 03:29:27 GMTOren Eini commented on The role of junior developers in the world of LLMsChris,
I actually think that there is a lot for juniors to leverage in the new AI.
If you are curious and open to learning ( and understand that the model isn't "the" Truth ), you have what is effectively a senior dev with infinite patience dedicated to you 100%.
That is an amazing force multiplier. https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment5https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment5Sun, 24 Aug 2025 10:35:44 GMTChris Robison commented on The role of junior developers in the world of LLMsThe really irritating thing about AI conversation around "eliminating jobs" is that it is so focused on short-term wins that sacrifice the future. If all we hire is senior developers and never train up new people...we're screwed.https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment1https://ayende.com/blog/203107-A/the-role-of-junior-developers-in-the-world-of-llms#comment1Fri, 22 Aug 2025 21:00:43 GMTOren Eini commented on AI's hidden state in the execution stackFrank,
I'm doing a webinar *today* where we show off what we can do there with RavenDB.
Would love to have you there: https://discord.com/invite/ravendb?event=1410573390154174506https://ayende.com/blog/203043-A/ais-hidden-state-in-the-execution-stack#comment2https://ayende.com/blog/203043-A/ais-hidden-state-in-the-execution-stack#comment2Mon, 08 Sep 2025 13:58:30 GMTFrank Quednau commented on AI's hidden state in the execution stackWhile in the middle of a POC to get the details right of a "Get user approval for a tool call with yes / no / always allow this particular tool" semantics, you're _quite right_ to say that there is quite a bit of state-keeping involved
https://ayende.com/blog/203043-A/ais-hidden-state-in-the-execution-stack#comment1https://ayende.com/blog/203043-A/ais-hidden-state-in-the-execution-stack#comment1Mon, 08 Sep 2025 13:56:01 GMTOren Eini commented on Memory optimizations to reduce CPU costsJoel,
Yes, the idea is that you do less lookups in general. But the key here is that the CPU costs did NOT come from anything that we did.
This code change should _also_ have a (small) impact - not that much, since the actual fields values will be in L1 anyway, but the reduction here was because of the GC not having to do any work.https://ayende.com/blog/203011-A/memory-optimizations-to-reduce-cpu-costs#comment2https://ayende.com/blog/203011-A/memory-optimizations-to-reduce-cpu-costs#comment2Sun, 17 Aug 2025 05:57:17 GMTJoel commented on Memory optimizations to reduce CPU costsNow, I'm not sure and haven't tested, but in theory the final version could be faster, too, as the CPU could fit more byte values than references into the cache, and as long as the actual fields values stay in the cache (or are moved into registers, I'm not sure if the JIT does that) it should be able to loop through much faster. Or am I missing something? https://ayende.com/blog/203011-A/memory-optimizations-to-reduce-cpu-costs#comment1https://ayende.com/blog/203011-A/memory-optimizations-to-reduce-cpu-costs#comment1Sat, 16 Aug 2025 07:15:31 GMTOren Eini commented on Replacing developers with GPUsBertrand,
I meant that you can't replace the HR department with IT managing GPUs. Basically, those models aren't replacing people, but augmenting them. Your quote is the other way around .
As for what CEOs say - there is a bit of truth there, since there is a much bigger impact when you _do_ use AI, but that isn't instead-of.
https://ayende.com/blog/203012-A/replacing-developers-with-gpus#comment6https://ayende.com/blog/203012-A/replacing-developers-with-gpus#comment6Thu, 14 Aug 2025 06:07:35 GMTBertrand Le Roy commented on Replacing developers with GPUsGreat writeup, thanks for this! However, it doesn't matter that "you cannot replace your IT department with an HR team managing a bunch of GPUs" (assuming that's what you meant, I think you typoed/reversed IT and HR in the post's conclusion), what matters is that the leadership of large companies believe they can. When CEOs of large tech companies lie for profit about what AI can do, their customers often buy the claims without the tech chops to understand the limitations.https://ayende.com/blog/203012-A/replacing-developers-with-gpus#comment1https://ayende.com/blog/203012-A/replacing-developers-with-gpus#comment1Wed, 13 Aug 2025 15:20:26 GMTRail commented on Goodbye Hibernating Rhinos, Hello RavenDB LTDGood name! Prev one was hard to pronounce right) for non nativeshttps://ayende.com/blog/203075-C/goodbye-hibernating-rhinos-hello-ravendb-ltd#comment1https://ayende.com/blog/203075-C/goodbye-hibernating-rhinos-hello-ravendb-ltd#comment1Thu, 14 Aug 2025 18:04:44 GMTOren Eini commented on Semantic image search in RavenDBPeter,
In both cases, RavenDB is also the store of vectors and serves as the vector index, etc.
Note that doing that during indexing is _not_ a good idea, since you'll have to re-generate that on each reindexing run. Instead, we move that to a background process that can be much smarter about the way it goes about generating the embeddings.
And yes, the expectation is that you'll use the text description for most searches, much more approachable.https://ayende.com/blog/202947-C/semantic-image-search-in-ravendb#comment7https://ayende.com/blog/202947-C/semantic-image-search-in-ravendb#comment7Tue, 29 Jul 2025 15:08:45 GMT