You would think this would be a simple task for an AI agent: “I have a document from our PM describing E2E scenarios for a feature in our product. Turn these scenarios into E2E tests in our test repository, according to its conventions.” And you would be wrong. Claude, or any other agent, will produce a nice set of tests and report back with “great success!”. But if you look a bit deeper (or just…
When I work on specs or designs with agents, it usually becomes a collaborative process. I discuss what I want with the agent until we reach a point where I feel we can lay out the design. Then the agent writes the spec, and I do a couple of iterations of comments and amendments. Sometimes I want a second opinion, so I let Codex and Claude review each other’s suggestions until we get to a better…
I’ve been thinking quite a lot about AI-driven agentic development and what it takes to make it safer when developing sensitive products. I keep coming back to the “cage” idea. There are places where agents can roam free, and there are places that are sensitive and require deeper review. And human attention is scarce, especially when agent PRs become larger and more frequent. So how do we draw…
In my last post I introduced my side project, BEAR - a tool that tries to show how agentic development may be done in a safer way, by creating boundaries for agents as they develop, and allowing humans to be alerted when agents try to expand these boundaries. But I want to focus on something else in my project. I want to focus on the “my”. Because while “I” was “developing”, I kept asking myself -…
In the last few posts I’ve been thinking about how development might change when agents can write large amounts of code very quickly. If generating implementation becomes easy, the constraint in development shifts. The interesting question is no longer how we produce code, but where control should live when a system can evolve at that speed. One thing that kept coming to mind is that many of the…
Lately there are many posts celebrating the death of friction, praising how AI removes the friction of writing code and increases development velocity. But is friction always bad? From my current personal perspective, for example, the friction a shelter wall provides when a rocket hits it is good friction. But let’s take a less sensitive example. When Git came along, it brought a real change to…
When we look at the history of programming language revolutions, there’s a consistent pattern. Every major shift in programming increased expressiveness, but it also introduced new structure and constraints. Each shift created a new level of abstraction. We could express what we wanted more clearly, with a larger vocabulary, but always under formal rules. But this shift feels different. For the…
Look, vibe coding is great. But not every coding is a vibe. Coming from years of building products and backend services that provide critical business functionality for high-profile and demanding customers, you can’t “vibe” this. Working on these kinds of systems requires real confidence. And while LLMs are great, they’re still non-deterministic. For high-scale, high-performance, business-critical…
Software, as a technology, is now underlying almost every aspect of our world. Computers and software are part of nearly every area we can think of. And this means that software engineering is practically becoming a practice that is relevant in everything we do. Or, if we want to be more dramatic, we can say that software engineering is the most influencing trade existing today. It is therefore…
I came across this recent post by Mikko Alasaarela - The Rise of Emotionally Intelligent AI . I’m re-posting here my comment to it. In his post, Mikko Alasaarela contemplates about AI and emotional intelligence. He claims that AI is moving fast towards being emotionally intelligent, in a way that might be better and less biased than what we humans employ. It’s an interesting view, but there is a…
There are some things in life that everyone tells you not to do. Sometimes you still do them. One of these things is building your own framework. (Don’t you just hate it when your parents tell you again and again - don’t build your own framework?). Well, we have some excuses. When we (at Gigya) embarked on our microservices journey two years ago, the .NET landscape was somewhat barren. (Why .NET?…
When modeling data in Elasticsearch, a common question is how to design the data to capture relationships between entities, to allow at least some level of “joins”. Elasticsearch has a good guide about data modeling . One of the options provided for expressing relationships is the parent-child model. A parent-child relationship in Elasticsearch is a way to express a one-to-many relationship (a…
When building a distributed service, there are cases where you need to broadcast messages to all nodes running your service. For example, if your service holds a cache of items in memory, and an operation on one of the nodes can invalidate an item, you need to notify all of the nodes to remove that item from the cache. These types of notifications are a good use case for a Pub/Sub messaging…
During 2011-2013 I had the pleasure of working as Chief Architect for serendip.me , helping to build it from the ground up together with Sagee and Asaf , Serendip’s founders. I wanted to share some of the experience of building serendip’s backend - the technologies we used, architecture and scaling considerations - since personally I always find it very insightful to hear about real-life start-up…
Elasticsearch is the hot new kid on the NoSQL-Big-Data block. It is a powerful tool and there are a lot of things you can do with it. But as with any system, there are just some things that are not built in. For instance - security. What if you need HTTP access to your Elasticsearch, but want to protect it from unauthorized access? How do you add a security layer to your cluster? There are a…