Ayende @ Rahien

https://ayende.com/blog

13 posts

Tech

Subscribe via RSS

  1. The cost of a free feature

    About twenty years ago, I was working on what would eventually become RavenDB, and I needed an engine to handle queries. Writing a query engine from scratch is its own very large project, quite separate from writing a database engine. I made a decision that I still consider one of the smartest I made in those early days: I built on top of Lucene as my indexing and query engine.That let me stand on a firm foundation while I dealt with the problems I actually cared about: building a NoSQL…

    0
  2. Multi-Agents in RavenDB

    I've written before about why I think the “modern” approach of solving every problem by adding agents is a doomed path. The current instinct is to add more layers of agents, judges, reviewers, etc. - and hope the model will be smart enough to do the right thing and actually get something done.The issue is that we already have a well-understood way to coordinate independent contributors working on a complex system. It's called software design & architecture, and we've been refining it for…

    0
  3. The best code is the one you shift+delete

    Everyone talking about coding models fixates on the same number: how fast the thing generates code. This misses the point by a lot. The story isn't about how fast the model writes code I would have written anyway. It's that the model lets me do things that I might have done before but were expensive enough that I didn’t bother. I had three separate interactions this week that led to this blog post.We had a production problem on an instance and no clear idea what was going on. What we did have…

    0
  4. "Optimizing" concurrent regexes

    I am looking into some regex work, and I ran into a performance problem. I need to run a particular regex over a large number (millions) of strings. That caused my spidey sense to… tingle. The code in question looked something like this:long matches = CountMatchingEntries(new Regex(@"\s+user id\s+"));Creating a regex for each invocation is… expensive. That is why we have the RegexOptions.Compiledflag, after all. And the Regex class is thread-safe, so I did the equivalent of this code:// class…

    0
  5. Non obvious optimization with divide and conquer

    Deep in the heart of Corax (RavenDB’s querying engine), everything deals with something called a Posting List. Posting Lists are a way for the engine to say “all of those documents have the term Fast for the field Speed”. Conceptually, a Posting List is an ordered set of document ids. In this case (and this is important, the ids in question are numeric, not RavenDB’s document id, which is a string).An interesting problem with Posting Lists is that a term can be unique (such as a GUID) - only a…

    0
  6. Learning to code, 1990s vs 2026

    I still remember the bookstore. I was holding a 600-page brick of a book on how to build Windows applications, trying to convince my mother that I really needed it. This was 1994 or 1995. A book was how you learned to program at that time. You took it home, you read it cover to cover, you typed the examples by hand, and somewhere along the way, the ideas sank in.From there, the tools for learning kept evolving. Printed books gave way to CD-ROMs and then to online documentation. Then came the…

    0
  7. The GPU Is the New Bangalore

    In the 2000s, the hottest move in software was offshoring. You'd ship your requirements to a development shop in India, Vietnam, or Bangladesh, pay a fraction of Western developer rates, and wait. The cost savings were real, every spreadsheet said so. The failure modes were also real, every CTO said so.Even assuming that the teams working on your code were smart, motivated, and hardworking, the distance, communication overhead, the time zone mismatch, and misaligned incentives created a brutal…

    0
  8. Putting Claude up against our test suite

    I’m convinced that in hell, there is a special place dedicated to making engineers fix flaky tests. Not broken tests. Not tests covering a real bug. Flaky tests. Tests that pass 999 times out of 1000 and fail on the 1,000th run for no reason you can explain with a clean conscience.If you've ever shipped a reasonably complex distributed system, you know exactly what I'm talking about. RavenDB has, at last count, over 32,000 tests that are run continuously on our CI infrastructure. I just…

    0
  9. 15+ years of working with coding agents

    No, the title is not a mistake, nor did I use my time travel pass to give you insights from the future. Bear with me for a moment while I explain my thinking.From individual contributor to oversight roleI started writing RavenDB in a spare bedroom, which turned into an office. The project grew from a sparkle in my head that wouldn’t let me sleep into a major project in very short order. Today, I want to talk about a pretty important stage that happened during that growth phase. Somewhere…

    0
  10. Expertise in the age of AI, or: Matt's Claude'll handle this

    One of our team leads has been working on a major feature using Claude Code. He's been at it for a few days and is nearly done. To put that in context: this feature would normally represent about a month of a senior developer's time.He did the backend work himself — working with Claude to build it out, applying his knowledge of how the system should behave, reviewing, adjusting, and iterating. He handled only the backend, and when I asked him about the frontend, he said: "I'm going to let…

    0
  11. Using AI agents in long-lived software projects

    You read the story a hundred times: “I told Codex (or Claude, or Antigravity, etc.) to build me a full app to run my business, and 30 minutes later, it’s done”. These types of stories usually celebrate the new ecosystem and the ability to build complex systems without having to dive into the details.The benchmarks celebrate "one-shotting" entire applications, as if that's the relevant metric. I think this is the wrong framing entirely. Mostly because I care very little about disposable…

    0
  12. Agents, Code Reviews, and the Bottleneck Shift, Oh My!

    Like everything else, we have been using AI in various forms for a while now, from asking ChatGPT to write a function to asking it to explain an error, then graduating to running it on our code in the IDE, and finally to full-blown independent coding assistants. Recently, we shifted into a much higher gear, rolling it out across most of the teams at RavenDB. I want to talk specifically about what that looks like in practice in real production software.RavenDB is a mature codebase, with about 18…

    0
  13. The 'Million AI Monkeys' Hypothesis & Real-World Projects

    I have run into this post by John Rush, which I found really interesting, mostly because I so vehemently disagree with it. Here are the points that I want to address in John’s thesis:1. Open Source movement gonna end because AI can rewrite any oss repo into a new code and commercially redistribute it as their own.2. Companies gonna use AI to generate their none core software as a marketing effort (cloudflare rebuilt nextjs in  a week).Can AI rewrite an OSS repo into new code? Let’s dig into t...

    0