A while ago, MongoDB purchased VoyageAI for 220 million dollars . Since then, they have released a couple of dedicated embedding models. For example, you can read their blog post on voyage-context-4 . The key premise in those sorts of models is that you can feed the model text of any size, and it will automatically handle generating embedding vectors, smart chunking, providing context, etc. I ran…
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…
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…
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…
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…
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…
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…
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…
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.…
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 role I 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.…
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…
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…
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…
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…
miscellaneous, development In 2008, the movie Eagle Eye came out. I remember watching that at the time and absolutely loving this movie. It is an action movie, so enjoying it once is the sole criteria that I have. Surprisingly, I got flashbacks of this movie repeatedly in the past few weeks. I think it is safe to talk about “spoilers” for a movie that is old enough to drive, so the…
I am working a bit with sparse files, and I need to output the list of holes in my file. To my great surprise, I found that my file had more holes than I put into it. This probably deserves a bit of explanation. If you know what sparse files are, feel free to skip this explanation: A sparse filereduces disk space usage by storing only the non-zero data blocks.Zero-filled regions ("holes") are…
I needed to export all the messages from one of our Slack channels. Slack has a way of exporting everything , but nothing that could easily just give me all the messages in a single channel. There are tools like slackdump or Slack apps that I could use, and I tried, but I got lost trying to make it work. In frustration, I opened VS Code and wrote: I want a simple node.js that accepts a channel…
Modern coding agents can generate a lot of code very quickly.What once consumed days or weeks of a person’s time is now a simple matter of a prompt and a coffee break.The question is whether this changes any of the fundamental principles ofsoftware development. A significant portion of software engineering (beyond pure algorithms and data structure work) is not about the code itself, but…
I was reviewing some code, and I ran into the following snippet. Take a look at it: public void AddAttachment ( string fileName , Stream stream ) { ValidationMethods . AssertNotNullOrEmpty ( fileName , nameof ( fileName ) ) ; if ( stream == null ) throw new ArgumentNullException ( nameof ( stream ) ) ; string type = GetContentType ( fileName ) ; _attachments . Add ( new PutAttachmentCommandData (…
RavenDB has recently introduced its dedicated Kubernetes Operator, a big improvement over the Helm charts that teams have been using. This is meant to streamline database orchestration and management, essentially giving you an automated "SRE-in-a-box." You can read the full announcement here . And the actual operator is available here . The Operator shifts the management paradigm from manual…