This episode features Blitzy founders Brian Elliott and Sid Pardeshi, who discuss their "infinite code context" system that enables AI to autonomously complete over 80% of major enterprise software projects in days. They delve into their dynamic agent architecture, how they select and cross-check different models, and their focus on AI memory advancements over fine-tuning. The conversation also covers their unique pricing model, the path to achieving 99%+ autonomous project completion, and the future implications for software engineering roles.
Hello, and welcome back to the Cognitive Revolution.
Today, my guests are Brian Elliott and Sid Pardesci, CEO and CTO of Blitzy, a company that uses AI in just about every way you can imagine to help enterprise software teams implement large scale features and execute modernization plans with unprecedented speed. Regular listeners will know that Blitzy has recently come on as a sponsor of the Cognitive Revolution. And while this does technically make this a sponsored episode, you can rest assured that this conversation absolutely stands on its merits.
In fact, I've noticed over time that my interviews with sponsors often end up being among my favorite episodes. And I think the reason is that founders who've achieved real product market fit are often unusually willing to share the nitty gritty details of their approach. It's a uniquely effective way to convince prospective customers that they're better off buying from an AI pioneer than attempting to recreate such a sophisticated system in house.
And it also signals that their product is still rapidly improving. So over the course of the next two full hours, we will go super deep on Blitzy's approach, what they mean when they say infinite code context, and what enterprise software development looks like when more than 80% of major projects can be done autonomously in days. Highlights include the architecture they use to generate agents dynamically just in time with prompts written and tools selected by other agents, Why they actually run enterprise apps in a parallel environment as part of their onboarding process.
How they ingest 100,000,000 line code bases and deliver value in the form of improved documentation, which also improves coding Copilot performance even before the code generation process begins. How they use detailed knowledge graphs to support sophisticated context management strategies, which minimize models context anxiety and other strange behaviors. The critical role of taste in evaluating new models and framework changes on such large scale projects.
Which models they find strongest for which purposes and why they always use models from different developers to check one another's work. Why they are more bullish on advances in AI memory than on fine tuning, how they came up with their 20¢ per line of code pricing model, and why they will do anything they can to deliver more value for customers even if it forces them to raise prices in the future, What it will ultimately take to achieve 99% project completion and even full autonomy in enterprise software development. And finally, their outlook on the software engineering labor market, which favors senior engineers in the short term, but junior engineers who can use AI effectively over time.
Brian and Sid are both high energy guys, and they were remarkably forthcoming in this conversation. I learned a ton, and I expect that any enterprise software leaders who listen will come away thinking about specific projects where they'd love to put Blitzy to the test. So without further ado, I hope you enjoy this deep dive into the present and future of autonomous software engineering with Brian Elliott and Sid Pardesci of Blitzy.
Brian Elliott, CEO at Blitzy. Welcome to the cognitive revolution. Awesome.
Let's get into it. One of my favorite things to do in life is talk to AI maximalists, and I've known Blitzy by reputation for a while as the company that has figured out a way to create infinite code context, It doesn't get more maximalist than infinite. So, I'm excited to unpack what you guys are building, how it all works, and the impact that it's having on the enterprise software industry.
We're going to go through all the layers. But first question, just to orient myself and the audience to you, how AGI pilled are you? How AGI pilled is Blitzy?
How AGI pilled are your customers?
We believe we can get AGI type effects out of non AGI LLMs. And so, as folks are thinking about the impact of artificial general intelligence, they're talking about huge swaths of work being able to be done to provide economic value autonomously across domains. That's one amongst many definitions that is a moving target for defining AGI.
And so the core question is, can you achieve that output with the limitations and constraints of LLMs? We might be the most bearish on LLM capabilities as a pure standalone single LLM asset and the most bullish on the orchestration of those in long running complex systems.
Yeah. That really echoes the conversation I recently had with Daniel Meisler who created this personal AI infrastructure framework. His mantra is harness is more important than model.
What obviously, one big limitation there is the context window is finite. And even at a million tokens relative to the size of an enterprise code base, that's not nearly enough. Any other, you know, kind of limitations of LLMs as standalone creatures that you think are most important to have in mind?
Yeah.
there's so many, right? And being so forward on the limitations is what allows you to build something really powerful and really magical, right? So context is one, but there's a difference between a context window and an effective context window, right?
So as you start to eat into, let's say, 20%, 30%, 40% of a context window, there's a depreciation that occurs. Each model is a little bit different. There's lots of different ways to test this with self in house benchmarks.
But you start to lose intelligence and quality as you start to fill up even the advertised context window. The depreciation is a little bit different by even task type. So what you want to do is really effectively manage the amount of work and the type of work that you are loading into a context window while also pulling out anything that you don't need.
So that's like that's a more nuanced view on the limitations of a context window. The other limitations right are how many tools an individual agent can effectively call. It used to be that they could call zero tools, it could call one, two, or three, and then call eight or 10, right?
And then tool selection in the agent itself is also something that you really need to understand, steer, and give only the correct tool access to. You think of tool as calculator or a compiler or sort of like any outside entity that one is doing. And then, like lastly, it's maintaining long running intent of the human, right?
Or like intent of the machine or instruction, right? It's a byproduct of context management, but it sort of has to do with attention in general. And so if you can design a system that says, great, LLMs are a very, very cool probabilistic type of computer.
They have all these, you know, limitations at least when when leveraged as a single instance. And then if you can accept those limitations and then and then build the the harness or the cognitive cognitive architecture, you can you can really create something that can do AGI type effects.
So I can't help but ask for a couple specific tips because right now I'm doing the work of kind of building out context of my own life, pulling out all my email history, my Slack history, all the transcripts of the podcast, all this stuff into just this, you know, kind of big data soup. And now I'm trying to layer on various kinds of summaries, different angles at it. And in some ways, this, like, you know, is probably quite similar to what you guys are doing with Codebases, albeit for me, it's just my own stuff.
I was just thinking earlier today, I wonder how much context I really should put into Gemini Flash or if that is the right model. Maybe there is a different model that even though its nominal context window is shorter, I would actually get better results for a given amount of context. How would you advise me?
Are there any kind of top line heuristics that you would be willing to share that are like, this is what we see as the best and this is kind of where it drops off. Yeah.
let's put a pin in a point of of not to just use one family of models at all to do this, and we'll cover that in a second. And let's talk about how you sort of manage this information. Right?
So a context is serial, information is relational. Right? And so like that that email connects to that thing that you said in the Slack message.
Right? And those might be on different applications. And so the question is, what are the core relationships that govern this domain?
Right? So we put out a we put out a paper about domain specific context engineering, right? But what is what is core is context engineering is not general.
It is domain specific meaning there is a core set of entities that relate in certain ways inside of the domain of let's say personal life or work life. And so you have to first understand and define those relationships and then pair that with semantic understanding. Right?
And that is how you get closer to the context that might be important for any task while removing away the context that is not important for any task. That was like a very broad philosophy, but the idea that semantic clustering is sufficient really inaccurate.
Yeah. Okay. I like where you're going with this.
So what I'm doing right now is, again, starting with all this raw information, and then I'm kind of trying to build up layers of higher and higher order understanding. First of all, I'm just going, okay, let's create a timeline. So I grab whatever I have from all sources, sort it by date.
Some might be emails, some might be podcast transcripts, Throw all that into an LLM and say, you know, give me a summary of kind of what I was saying, doing, thinking about whatever at this given point in time, build out a timeline. Then on top of that, it'll be like, who are the relationships that really seem to matter over the course of all this time? Then it'll be like, what are the projects that I was engaged with and which people was I working with those on?
And I'm so I'm kind of building up all you know, through all those levels right now.
How does that play out? I'm sure it's a know, again, it's an analogous thing. How does that play out in the context of a giant enterprise code base that you guys get your hands on?
Yeah. Well, the approach that you're taking on that personal project will be okay at first and then get worse over time. Right?
So you're at the personal project stage of like a slower mid market software application. So I say like, you can kind of just shove all the stuff in there and you'll get some approximately right results. Like Gates had this quote, like if you could schematize the world, like you can get a computer to do anything.
And so in your example, you're trying to schematize your life, right? In the example of code, you really are trying to schematize code and the relationships in code agnostic of language. So you can throw, in the case of a Bixie, you could throw a 5,100,000,000 line code base on it.
And because we have a deep relational understanding that we built first, it takes a few days of compute to build that. But a deep relational understanding that we understand first inside of that code base, that is the base layer that allows us to do large amounts of work, development work autonomously. In your example, you'd first schematize your life.
That might be dates, it might be months as a group, dates as a group, it might be other activities as a group that relate to other things. You first and foremost need to understand what are the core relationships that govern the domain. And we have done that in a very, very unique way with code.
So when an enterprise starts with us, they ingest their code. It takes a few days of compute and we then have a deep and novel approach on the category of knowledge graphs but like that's maybe not sufficient to explain how deep the understanding is so that in any line across a 100,000,000 line code base I can tell you exactly what is relationally relevant down to the line level so that when I generate code, I am injecting and pulling out the correct context just in time.
Obviously like dependencies is one like core type of relationship within software. What's the kind of and I guess a lot of that has been done traditionally with static analysis tools. Right?
Like, there are all sorts of tools that can go through and say, this file imports these other things and they import these other things, and so we can kinda fan out that way. Yep. So what's the breakdown between how much you're using those kind of static analysis tools versus LLMs to do this ingestion?
And what's the double click on, like, the nature of relationships that goes beyond dependencies?
Totally. And so if you think about the even like ASTs, for instance. Right?
These are, like, one of these tools, like version specific language, specific abstracts and text trees. These are, a pre LLM worldview of understanding the relationships and meanings between a language and version of a programming language. So you can think of what we've invented as a, it's not an AST but resembles the characteristics of an AST from accuracy that is programming language agnostic designed for AI agent traversal.
Right? And so that was like a lot of words, but you think like, go like globals, classes, variables, functional relationships inside of an application. And so by having the traditional, I would say, programming language agnostic relationships on top of actually building and running the application, which we do as we create relationships, you're able to create a much deeper understanding.
I think one of the powers is you're really not able to get understanding unless you are building and running applications and putting that through the paces to understand everything from what you said on the left side which is like dependencies to how things are relating when they're running production and have like actual logs running and understanding those relationships. So, you can imagine the spectrum of compile time, run time, production at load items that, like, a a software development team might look at, and those ultimately form the base of the relationships that, that physically schematized enterprise code.
Yeah. Okay. That's really interesting.
First of all, do I understand correctly that you are literally running enterprise applications in your own Yeah. Like parallel universe to the because, of course, your your clients are continuing to run their applications in production, right? You've got to kind of view that on We're often in their own cloud environment.
in their cloud environment. Like, let's see, to get started, like one of the reasons that takes it's not days you know, zero minutes to get started is it's getting your access to your environment, getting all the necessary keys so that you can spin up these applications and run them. But it's cool because like as you, when you get large scale code outputs from Blitzy, you'll also see like the QA that we did and like the screenshots of us, of an us, an agent like clicking through and running an application in production.
And so that happens both upon ingestion to make sure that we can run and build the application and then add cogeneration as we go through QA. We like running the application is core to getting high quality code because you need a recursive correction loop when not just something doesn't compel and compile and build, but it doesn't act in production how you're expecting it.
Yeah.
production application is, like, I'm sure it's not trivial in many, many cases. You need, like, you need to see the database. Right?
Like, in there there's there's, like, real implementation work. Right?
because they haven't really done it or this thing has been kinda running in the way it's been running for a long time.
a sort of ready plan for how you would even do that. Right? A lot of applications, insurance for every reason of all places, like, they just really have no way to provide us these instructions.
And so, like, what we'll do, we'll go through this iterative approach, which provides value even in the approach where we will take the information in which they think it takes around the application. And then like, let's see, we'll find a limit case of not being able to do it. And then we'll like, hey, like, hey, we don't have access to this package.
And they're like, okay, well, had no idea dependent on that package. And so able to kind of go through this process of actually creating the correct build instructions for the application that's essentially been sitting somewhat dormant that they want to activate or move over into the more modern technology stack as a part of getting Blitzy to stand it up. So we've provided value just in implementation, I would say, but it does come with obviously challenges.
Like there's lots of old enterprises, for instance, like to build the application. It's not as if you're just writing a script or a package. Like it requires what would have typically been a human and dialog boxes popping up and putting information in.
But Blitzy is sophisticated enough to spin that up and then put in user creds and were in their IP to build an application that is like you know, that's how Windows applications were built back in the day. And so it requires a real build sophistication in the application to get this level of fidelity.
Hey. We'll continue our interview in a moment after a word from our sponsors.
Want to accelerate software development by 500%? Meet Blitzy, the only autonomous code generation platform with infinite code context. Purpose built for large, complex, enterprise scale code bases.
While other AI coding tools provide snippets of code and struggle with context, Blitzy ingests millions of lines of code and orchestrates thousands of agents that reason for hours to map every line level dependency. With a complete contextual understanding of your codebase, Blitzy is ready to be deployed at the beginning of every sprint, creating a bespoke agent plan and then autonomously generating enterprise grade, premium quality code grounded in a deep understanding of your existing codebase, services, and standards. Blitzy's orchestration layer of cooperative agents thinks for hours to days, autonomously planning, building, improving, and validating code.
It executes spec and test driven development, done at the speed of compute. The platform completes more than 80% of the work autonomously, typically weeks to months of work, while providing a clear action plan for the remaining human development. Used for both large scale feature additions and modernization work, Blitzy is the secret weapon for Fortune 500 companies globally, unlocking 5x engineering velocity and delivering months of engineering work in a matter of days.
You can hear directly about Blitzy from other Fortune 500 CTOs on the Modern CTO or CIO Classified podcasts, or meet directly with the Blitzy team by visiting blitzy.com. That's blitzy.
com. Schedule a meeting with their AI solutions consultants to discuss enabling an AI native SDLC in your organization today. Everyone listening to this show knows that AI can answer questions, but there's a massive gap between here's how you could do it and here, I did it.
Tasklet closes that gap. Tasklet is a general purpose AI agent that connects to your tools and actually does the work. Describe what you want in plain English.
Triage support emails and file tickets in linear. Research 50 companies and draft personalized outreach. Build a live interactive dashboard pulling from Salesforce and Stripe on the fly.
Whatever it is, Tasklet does it. It connects to over 3,000 apps, any API or MCP server, and can even spin up its own computer in the cloud for anything that doesn't have an API. Set up triggers and it runs autonomously, watching your inbox, monitoring feeds, firing on a schedule, all twenty four seven even while you sleep.
Wanna see it in action? We set something up just for Cognitive Revolution listeners. Click the link in the show notes, and Tasklet will build you a personalized RSS monitor for this show.
It will first ask about your interests and then notify you when relevant episodes drop. However you prefer. Email, text, you choose.
It takes just two minutes, and then it runs in the background. Of course, that's just a small taste of what an always on AI agent can do. But I think that once you try it, you'll start imagining a lot more.
Listen to my full interview with Tasklet founder and CEO Andrew Lee. Try Tasklet for free at tasklet.ai, and use code cog rev for 50% off your first month.
The activation link is in the show notes, so give it a try at tasklet.ai.
You guys have been at this for a few years. Right? So one big question I had is, obviously, the capabilities of models have changed dramatically.
Right? So in terms of the ability to look at a screen, understand what's going on, I think we saw that kind of demoed for the first time with the GPT-four launch, but it was still pretty rough around the edges and not really even available for after that. The computer use benchmarks, you know, we're kind of in the steep part of the S curve right now.
I remember fondly, but also with frustration, the experience of early computer use agents, even if they could see the button, couldn't necessarily click on the button. They couldn't quite find the right place to click. So that stuff has all improved dramatically.
How do you think about turning Blitzy on itself? Like, I recently did an episode with Andrew Lee from Tasklet, and he's another AI maximalist I really enjoy talking to. One of his mantras is speed in the AI era, speed is the only moat.
And he takes a lot of pride in just how fast they rebuild their stack from the ground up. So, I guess, what would be the big unlocks that you have seen in terms of, okay, models couldn't do this before. We had to do all this stuff to compensate.
Now they can. We can kind of simplify that or we can aim higher in terms of what we could do. I'd be interested in what those big milestones would be as you look back.
And, like, just how often do you find yourself kinda having to do major modernization work of your own stack even if that modernization is only a few months from the the last version to the new version? It's it's such a good question.
we essentially made a bet that the models were gonna get faster, way better than anybody in the market expected them to get better. And so we started building for a future universe that wasn't here when we were doing the all of the design and all of the work of this cycle. It's a there's no MVP of Let's see.
It's like an end to end platform experience. Right? And so those the world that we built for over the last three years and the world in 2025 essentially intersected.
Right? These things were gonna continue to get really, really good, and and we were correct. And so when you are building systems for an ever improving state of LLM intelligence, you wanna build the systems dynamically.
So when people talk about building harnesses, they are like, they're sort of like hard coding and codifying actions based on the level of like LLM intelligence and capabilities, right? And so those harnesses depreciate as LLMs get better and you know, the level of depreciation is tied to how hard coded your design is, let's say, and the rate of intelligence increase. And so everything that we do in Blitzy is dynamic design, meaning Blitzy's agents are generated dynamically just in time.
Prompts are written by other agents. Tool selection is assessed just in time by context injection. Right?
And then the the the whole planning process, right, that governs all of this is sort of chunked and revisited iteratively. Right? And so in this, like, as the models get better, like, it's just great for us.
Right? Like, we can we can more or less just do just do more and it's a config file to toss in a different LLM but because everything inside of the system is dynamic, we don't feel the depreciation that one would typically feel when they're like building harnesses in that and I would say, like the classical way that folks build harnesses today. Like, for instance, right?
Like as a new model comes out, new prompting instructions for that model come out. Our agents just reference the latest prompting instruction tied to their model and then that self writes a prompt for an agent that's injected. And so it doesn't matter that the prompt guidance changes for the next Gemini model.
We will just go reference that. We, the agent, will just go reference that as this dynamically writing a prompt for another agent.
So that sounds awesome. It sounds like you're living the dream in many respects. One thing I do wonder about there though is like, how do you evaluate that?
Because the typical harness, while it does have this, and I can speak to that, when I tried this sort of personal AI infrastructure at various points in time, and I kind of always felt like it wasn't really there to give me tremendous value. I think now it's actually, we've maybe hit that point. But as I look back at some of this old code, I'm like, Oh my God, like 8,000 token context windows when I first tried this.
That was so limiting, and I was doing so many gymnastics to try to make that work. But one benefit of those gymnastics was, or at least one thing that was easier was I could at least kind of define a eval test set that I could wrap my head around that I could kind of look at and be like, Okay, this makes sense in inputs and outputs. And I kind of can throw a new model at that and get a quick sense of, Is it better?
Is it worse? Whatever. When so much is dynamic, how do you think about evals?
I guess one thing I could imagine would be you might do some fixed evals kind of as prep work, like let's characterize the effective context window of this new model and then tell itself what its effective context window is, give it some sort of metacognitive information. But you've probably got lots of other insights into how to eval such a dynamic system.
think it's important that your evals map onto the real world as closely as possible. So if you think about most evals in the world, they are designed to be easy, very easy for the human to evaluate, right? Like very easy.
Because it's like, alright, well, like, here's a function and here's a here's a different version of that function and and this other version is more accurate. Right? But that is a local optimization on an exponential technology.
Right? And so our evals are a bunch of applications that we've built over the years that are of larger scale. Some of them, you know, started on open source and we built their own versions of private applications over the years.
And so we're testing Blitzy on executing what we ultimately want to be a 100% outcome. And we're seeing how close we get to that outcome with the new configuration of Blitzy. Right?
And so we might give it a million line. Maybe we'll give it like Apache Spark. It's like 1,300,000 lines of code.
We have a custom configuration of Apache Spark from previous previous projects that we've done personally in life. We'll give those instructions and we'll be able to see very quickly, like, how close did we get to a 100% completion with this adjustment. And it requires an extreme amount of taste because if you're not a 100% there, you don't get to a 100% of result, the 100% being like what you did as a human in a previous life to get that to a 100%, You're now saying like, is this 85%, 88%, 90%, 95100%.
It's a difference between functionally correct which like BlitSec can guarantee functional correctness like, hey, we passed every end to end test, we passed every integration test, we passed every feature test But it may not be the final version that you actually intended to put in production. And there's always a difference between functional correctness and intent. And so it's that taste that is required to really improve the system and provide that feedback on top of the traditional large scale evaluation.
This is why I think it is really, really hard to build these systems without the right longitudinal experience to understand what great technical design and great implementation from a software perspective is. Like, we always say Blitzy is the instantiation of if you had Sid work at the time of compute, my CTO and co founder, because he's instantiating his technical taste into the outcome in a way that is really, really impressive for the enterprise. Well, of course, they can specify their own taste and their own rules and the system will respect that.
But that is how we do evals, which is at scale at a very large point with a lot of taste involved.
So that kind of final taste step, if I'm looking over Sid's shoulder as he's evaluating the work of a new model thrown into the Blitzy meta harness,
What am I seeing him doing? You are looking at the final output but it's really you're looking at the logs, right? And so these are we use Langsmith for logs and tracing.
Shout out Langsmith, big fan of the Langchain guys. This is their tracing product. So as you look at Blitzy logs, like if you were to type them out in a piece of paper, right?
Like and I put it on a scroll that would scroll all way down to the end of the block. Right? The amount of agentic interactions that occur at runtime are absolutely massive, Right?
Where you have somebody injecting context, somebody writing a prompt, somebody writing code, somebody reviewing that code, somebody building the code, somebody doing, like, before and after, like, local pass to pass, fail to fail, and then it's like that's happening to get a piece of functionality out in the bigger system. Right? So as you see these agents interacting, it's a lot like looking at your engineers, have a technical discussion on what correct might look like.
Right? And so what you need to do is you need to look at the final output of the meta harness, right, like the pull request here, and then trace back in the system. I didn't like what happened here.
What happened in the system? Right? And how can I steer the system to dynamically be able to address this kind of instance in the future?
It's a completely different approach to to building software because the outcome is a little bit emergent in a way and you have to build the system to understand how to dynamically steer and validate to get to the right outcome.
Yeah. What does that steering process look like? Is it just giving system free text feedback?
Because that sounds like its own Yeah. Really, you try to be as algorithmic as possible. As you think about chunks of work being completed, the first step that we'll do after receiving a future state spec from the client, which is like our system will work with you to get a future state spec of what you want, that's a web application portion.
As that's sent off to do work, then you start off a planning process or Blitzy starts off a planning process and then it executes against that plan. And so each one of those planning steps and each chunk of work, planning, reading, testing, validating QA, and doing that repulsively repulsively is driven algorithmically to get to an outcome. And so it's tweaking the algorithms that govern the system to get to the right outcome.
Fascinating. Hey. We'll continue our interview in a moment after a word from our sponsors.
Your IT team wastes half their day on repetitive tickets. Password resets, access requests, onboarding, all pulling them away from meaningful work. With Servl, you can cut help desk tickets by more than 50%.
While legacy players are bolting AI onto decades old systems, Servl allows your IT team to describe what they need in plain English and then writes automations in seconds. As someone who does AI consulting for a number of different companies, I've seen firsthand how painful and costly manual provisioning can be. It often takes a week or more before I can start actual work.
If only the companies I work with were using Serval, I'd be productive from day one. Serval powers the fastest growing companies in the world, like Perplexity, Verkada, Merkor, and Clay. And Serval guarantees 50% help desk automation by week four of your free pilot.
So get your team out of the help desk and back to the work they enjoy. Book your free pilot at serval.com/cognitive.
That's serval.com/cognitive.
Going back to the kind of initial ingestion and and sort of the the knowledge graph that is created, I'd love to hear your thoughts on knowledge graphs and how they relate to rag whether you guys are using, like, embedding. There's been obviously, like, many different approaches and and schools of thought here. I've always been attracted to the idea of knowledge graphs, but certainly for a long time, it was, like, rag was kind of more in vogue, then it seemed like a lot of times it was just like dump everything in the context window, you know, it started to become the prevailing approach when possible.
Obviously, it's not possible for large code bases.
kind of fuzzy semantic matching, or do you also avail yourself of that and kind of have, like, this is what we were able to find structurally that's relevant, and this is also maybe some other kind of relevant stuff that sort of fuzzy matched you might wanna be aware of. Yeah. You really wanna you wanna use both as a hybrid source of of truth.
Right? And and then when there's when there's conflicts, then you wanna, like you the system wanna explore much deeper and much further. Right?
And so it's important that these the issue with RAG as standalone a item is sometimes people will rely on the RAG abstraction layer as the source of independent truth. To answer your first question directly, you want to use both relational understanding and a semantic understanding and you want to pair those as agentic tools so that you can arm the agent to use these different tools to go and pull the right information but you wanna use these tools as an abstraction layer to go search the source of truth. Right?
And so this is where you don't wanna you don't wanna rely on the semantic match to pull out the truth. You wanna rely on the semantic match as a map or a legend against the actual source of truth. Go efficiently search, traverse, and find that, and then pull the source of truth into the context window.
Right? So it's really an efficiency search mechanism more than it is a a a storage of truth mechanism.
So one thing I've observed that I wonder how you address is so often when I have an agent searching through whatever, right, my Google Drive or my Gmail, One huge disadvantage that it has relative to me is that I have this sense when I have found what I was looking for. Yep. And it's always clear to me.
You know, I'm always like, I've not found it yet until I find it. Then I'm like, that's what I was looking for. That's obviously predicated on my historical familiarity and the fact that I was involved in creating all this stuff.
Right? So I kind of know, yes, that's the thing. The model obviously lacks that deep familiarity, historical participation, and so it can't be so confident in general that that was the thing that I was looking for.
So how do you guide models when they're doing this kind of search to make that judgment call of when to stop the search. I find that to be a very perplexing thing in my own building.
Yeah. So this is all about the mechanism of the request between yourself and the model. And so in the instance of like, I have a fuzzy idea somewhere between some, some, some mental neurons on what I might want, like, you might actually be doing the most efficient, efficient item by, by just going through and searching.
But if you think about completing work, right, in a workplace, work follows some sort of structure. Right? And so in in software development, it it follows a spec.
Right? And so therefore, like, you can express, and this is how people will do it. They'll express what they they're roughly trying to achieve with Blitzy.
It'll go look against the source of truth and it'll come back with a plan in the form of a future state technical specifications like what architects deal with all day to go do that work. Right? And so until you can provide the system, the right structure of output, it is unlikely from a system level to go and sort of do your bidding correctly.
And so then the question is like, how do you create the right interface experience to enable humans to enter with a fuzzy output, get confirmed on a structural strong output and then send that task off to the system versus the experience that you just described which is fuzzy input is sort of all you get, right? And so that some people use like chat for this, right? Which is like, I'm roughly thinking about this idea.
I think it's this thing tied back to this date. Then it can say, Oh, like is it any of these possible things that you want to go explore further? That's an intermediate abstraction layer ahead of the true deep search.
So it's all about creating an intermediate experience between the system of intelligence, the system of record, and then how you're sort of expressing that ask.
So as much as possible, basically, are giving when we actually are getting to the work stage in the process, you hope at that point that you have effectively given the agent everything it really needs to know, or at least the location of everything it really needs to know, and then it can kind of do additional search to, like, read in the details of that file, that function, that service, whatever, but you've already had a human approve a plan
and kind of sanity check at that level. So it should have clarity basically on on exactly what it needs to be reading. That's right.
And what's what's super important is, like, the system, like, is capable of doing both steps. Meaning, like, I can provide you what I'm trying to do inside of my, like, 30,000,000 line trading system. Right?
And then you can come back and like, let's say come back in about an hour after you give it this, let's say like what a page of general instructions that you're trying to achieve on the code base. And it'll come back with a very in-depth implementation plan because you didn't think about like the edge cases or the services that it might touch, right? It's an the whole point is it's impossible for a human to grok everything that might affect.
Right? And so, like, that is sort of phase one of system interaction being like, hey, heads up, like human with limited human context window. Here is the plan that you said expressed against this enterprise code base.
And like, here's a bunch of things that we're gonna have to do to implement this that like maybe you did or didn't think of. By the way, if you wanna do this a different way, that's cool too. But like, let's let's assess and make those trade offs before we go off and write 100,000 or 1,000,000 lines of code.
And so that experience of leveraging system intelligence to generate a clear version of work is required as phase one in order to do like large volumes of work in phase two.
So earlier you mentioned that today, I'm going to my my approach is going to work until it starts to fail. What's going to cause it to fail? And what should I be mindful of as I approach?
How do I know when I'm approaching failure and how should I be prepared for those failures?
Yeah. And so maybe I'll start by saying how we recognize failure in our system and then maybe we can map it onto your own passion project here, Rich I love. Inside of the Blitzy system at runtime, we are doing as much work as we can autonomously.
You can think of it as spec and test driven development at the time of compute. And we'll retry and re loop and recursively go back and self improve between running the application and getting the featured outcome. But at a certain number of attempts, right?
We have to say, okay, we can't do this part, Right? And so we have a separate and independent evaluation system that figures out what the desired end state was, what the system was able to do, and then writes the doc for, men. Optimally we get to this end state, like this is the most likely path that we believe a human could do that the system can do.
So you need to sort of build these mechanisms, these systems, the system of work, the system of QA, the system of evaluation to operate somewhat independently so that when you get the output, as a part of the output, you also get the report on what the system failed to do. And we always call that, that's like the human completion part. And so getting these to be really accurate allows you to move with confidence.
And so for us, that's a project guy that says like, Hey, these functions or these parts of the application, we need your help. By the way, did all of this work. We passed all these tests.
Here's the QA and here's the screenshot. So you can feel good on that. Go review that code, but go spend your time on this part.
So if we map that onto yours, you would need to have, this is my intent, my intent, get some work, that work has QA involved or cursively ahead of it getting the outcome and also a separate system to evaluate and grade the effort of that. Both of those artifacts should come to you and both of those systems within your application should be independent in nature. Like a report card.
So how about a kind of model scouting report? You had said that you don't wanna use just one family of models. That's clear to me, but why?
And do you have kind of rules of thumb for which families are kind of better in which ways? How many families are you using? Does Grok crack the list?
Do any Chinese models crack the list? Are you fine tuning models for particular purposes?
Give us a tour of the Model Zoo. Yeah. So we use the three major families of models in in Blitzy today, OpenAI, Google, and and Dropic.
The other ones are great and and maybe incorporated in the future for for different purposes. Right? But it's very clear.
The researchers, like, preferences are, like, somehow expressed in these models intelligences. And that they're very, very smart in sort of, like, different ways. And they're much, much smarter when you compare different families of models and have them review each other's work.
Right? And so if you take, like, if you if you took Opus and Sonnet from Anthropic and had them compare each other's work versus versus an OpenAI and Anthropic model, you're gonna get demonstrably better results by having a different family of models review or, you know, different different companies review work, at least in all of our our experience. Right?
And so that is super interesting. And it it changes every day, but, like, first pass code gen, like, Anthropic remains really, really strong. Structured output and code review, great results from OpenAI.
Like, by the way, what I say here will probably depreciate by the time the podcast even comes out. And Gemini has been better for long horizon work, task checking, task lists, keeping things progressing. Right?
And so that's, I don't know, date, time stamp this, like, towards the January, and I'm I'm almost certain that it'll probably change by by the February.
Yeah. The pace is unbelievable and relentless for sure. So to translating that back to kind of the meta structure of the whole thing, I'm kind of imagining that there is like a brief given at the highest level where it's like for this kind of task, you're probably gonna wanna use this model.
For this kind of other task, you're gonna use this model.
unfolds itself? Yeah, and you can think of an example of a dynamic algorithm rule would be like, you can pick the one that you think is best for this situation. And also, the reviewing agent must be one of these other options.
And so, we're not constraining the choice. We're sort of then constraining the selection of choices in the review model. That's an example of a sequence of steps used in validation that is dynamic in nature, not like you must use Gemini then you must use OpenAI for instance.
And then you asked about fine tuning, right? And so this is a fine tuning is a like a last mile optimization, I would say, and not a bet on dramatically better improved models. And so fine tuning is an expression of essentially, I can't get enough correct context engineering within the system and I can't get the right results.
And so, there's a place for it in the ecosystem but it's like as soon as you fine tune a model and the next one comes out and it is more raw intelligence, you're basically out of luck. And so we are much more bullish long term on what we call memory. And so you see a very shallow instantiation of this in tools like ChatGPT where it will start to sort of remember your preferences.
But there's a lot of memory that occurs in the enterprise environment. Right? And memory is another way to express both relational and semantic understanding, but with a lot more signal of truth.
Right? And so we very much believe that to get to a 100% autonomy within an enterprise workflow, you have to sustain memory of the actions of the best people and what they view as correct and then sort of store that in your instance in the enterprise's instance of the platform in this this in this situation, the enterprise instance of Blitzy. And that's how, like, even after the architect retires, that is the only one that knows, like, that system that enterprise itself has that IP in their instance of their AI system.
Memory for the missing middle, as I've sometimes called it, of LLM memory has been an obsession of mine for a long time. I was really taken by the Mamba architecture when that came out just because, hey, here we have something that's competitive with a attention mechanism and transformer, but it has a fixed state space size. We can potentially run this thing indefinitely.
Obviously, there are still limits to that. You know, there's a there's a spectrum in memory between like pure scratch pad and deeply integrated nested learning, continual learning futuristic stuff. That which sounds awesome, but it also does have some kind of challenges in that, you know, a nested learning type approach.
The model may perform better, but it it doesn't necessarily mean that you have a record of what happened or like what the key, you know, lessons were because it's in the weights. Right? So what do you think is if you were kind of gonna put your your own spec, let's say, out to the frontier model companies for what you want to see memory look like?
What is the shape of memory that would be the biggest difference maker for you guys?
Long term memory, I don't believe, will be solved at the LLM level. So, LLMs have so much momentum beside them that, like, another architecture, even if it were to solve for this, like, will not get the level of intelligence required to to to execute what these systems need. Right?
And so the like, memory is a problem to be solved at the system and sort of like by system, like the application layer, the system layer. And that memory is sort of is application or sort of domain specific, like to what is important to remember in what instance. Right?
And so memory, right? You can think of even memory as all the way back to the traces, The Lang Smith traces, like a series of steps was actions. The series of steps were driven by decisions that you chose to put in context.
The decision to put something in context might change in the future based on what you've learned from the way the enterprise expressed work. Right? And so this is tying all the way back to your context management system.
Like, that's where you're storing memory and preferences based on actions, not based on not based on model weights.
Interesting.
breakthrough that It will certainly Like, I I hope for it. Like, I really do. And even, like, some some expression of memory in the model layer will will, like, ease the burden on the on the system layer.
Right? But when it's, like, how how much memory and like, to give you maybe a specific example, like, if you think about memory at at a enterprise code base layer, right? The things in which one needs to remember are extremely locally specific.
Right? And so a memory on an enterprise code base is not universal. So it's not use this payment provider service over this payment provider service even though my enterprise has nine.
It's, hey, when I when you interact with this cluster of context, you need to use this service even though to you they look relatively functionally equivalent. There's some organizational or contract reason in which you need to use this service. Right?
And so that is so local from a from a contact interaction perspective that impressing global memory at the model layer actually has severe limitations. And so the question is, how do you bifurcate global truths or global memories, which people instantiate with rules today to try to manipulate these models to do what they want. How do you instantiate universally true long term memory and the weights in the models because these are more brute force levels of intelligence while keeping locally contextual memory based decisions at the system or at the application layer.
Yeah. I totally agree that there's you can't I mean, the nature of compression is like you can't compress everything, right?
got to be lost. That every problem I feel like is a search and compression problem at the end of the day. And you're trying to get rid of much as little loss at compression as you can and using search to try to minimize that.
But I think about search and compression like all day.
Yeah. It reminds me of, I'm sure you've heard this, but the old, it's kind of an old, I don't know if it's a parable or something of the sort of junior developer gets a problem, gets all excited, starts ripping off code, just typing a mile a minute, whereas the seasoned vet kind of leans back and says, I think I've seen something like this before. And that's kind of the thing that I can imagine, even with finite size, finite memory space, I can imagine that getting developed to the point where you could just get tremendously higher reliability on going out and finding the right documentation when it's actually needed, making the right decisions.
with LLMs who lack it. Sixth sense of, yeah, there's something here that I I kind of know I need to go, and I kind of know what I need to get. And if you were to look at, like, how Blitzy spends time as, like, the representation of the best cluster developers at inference.
We spend a huge amount of time in planning and system understanding and impact analysis, meaning like, let me really methodically think through this and then let me spend a lot of time figuring out everything else that this is going to affect. The code generation is relatively fast. And then a bunch of time on QA and validation and recursively improving the code based on what you're trying to achieve.
But writing a million lines of code is as fast as you can stream tokens. Our runs are as short as 12 as long as like a few weeks, it depended but it's a huge huge refactor, right? And so it's as you break that up, it is that wise developer motion of let me sit back, let me plan, let me think, let me think about everything this is gonna impact across the system and then let me implement as opposed to like the the junior dev which is which is just rocking code on on minute zero.
Yep. Okay. That's a great transition to a couple of questions I had around what you might call blitzy scaling laws, or another way to think about it would be limits to parallelization.
Well, you could just sound off on it, but I'm interested in what is the curve? Sam Altman famously tweeted, It's going to be really weird to live in a world where you can pay exponentially more for, like, marginally better results. So you've clearly got a curve like that.
I just need to kind of know how you think about that curve and, like, where you wanna be on that curve. How do you know when to stop paying for more inference? And then parallelization, like Kimi k two just came out.
They've got their agent swarm thing. And, you know, you can there's another kind of some sort of logarithmic thing here where, like, a thousand agents does not make you go a thousand times as fast. It can make you go five times as fast, maybe, maybe 10 times as fast.
You could maybe characterize what that looks like and also what do you think the reasons are for it? I mean, some things, I guess, are just sequential. You got to plan before you can execute and so on.
But yeah, that's plenty of prompt. Take it from there. Nice.
Yeah. Good structure prompt there. So let's let's talk about parallelism and the limits of parallelism.
Right? And this is like, when you think about the work getting done at the system level, this is a a core topic understanding within the domain that you operate. We operate in enterprise software development.
What sort of work can be done in parallel versus sequential, because trying to do everything at once is a surefire way to get really, really bad results. Right? And so just like a an engineering, right?
Like an engineering team will like look at an epic, They'll break it down into tasks, and they'll realize which tasks depend on what. Really, that is a huge part of what is happening at the planning phase within Blitzy. We are deciding based on, like, software development fundamentals, like thing x depends on thing y.
Therefore, we have to get x to build, compile, and pass tests before even starting on thing two here. So we must do it in that sequence. Right?
And so that is what is for us happening at the planning stage, which is parallel versus sequential tasks that is just a software development problem set. Now in other domains, like there are there are other ways to think about, like, what can be done in parallel versus what can be done in sequential. But in engineering, it's it's very easy to grok, like, what is what depends on what in a sequence of work.
And therefore, we have a a system that algorithmically works through and assesses that. So that is that is the answer on on parallelism. Like, we wanna do it as high quality as possible, which means in the instance where the system is not entirely sure, it'll assume sequential in the instance where it is extremely sure that it is is parallel or do it in parallel.
Right? And so it's sort of like a a tolerance preference on quality, which will answer your first question, which is paying more to get better results. Right?
Our our thesis is, like, we will pay any incremental dollar. We will write any incremental algorithm. We will really do anything within the system to improve the quality of the code.
Right? All the way to fully autonomous and oppressed offer development as the goal for the company. And so, like, we we are not, in our our opinion, cost constrained because the other side of a pull request is human labor.
Right? And so like I would much rather have that human be working on problems that are on the edge, that are truly innovative, that are thinking about absolutely disrupting the way that they're applying technology to their business than I would have them spent on vanilla application development, just a regular annotation. They've already expressed their preferences vis a vis Blitzy on the technical design that they want implemented, and then they're handing off that work for us.
And every ounce of work between let's see, which we typically do 80% to 90% of the quantum of work and then we'll call out what we need the human developer to do. But in the vision of the company, remaining work, which is just traditional configuration, QA, that's a bug. That's a bug in the system towards the vision of the company because software developers are problem solvers.
Their engineers are problem solvers at day zero. And if we can have the world's smartest people working on problems on the edge, not worried about package incompatibility or QA, we've done a great service to humanity.
I'm going to come back to the developer experience maybe in a few more minutes, I suppose. Let's talk about the economics a little bit more, though, because on the website, there's this 20¢ per line component to pricing, and you can kinda complicate that. I think there's, like, kind of a base buy in level and then, you know, 20 lines 20¢ per line beyond a certain level or whatever.
But that strikes me as creating possibly an interesting tension for you where you have now said, okay. This is what we're gonna charge you, but then you also just said, I'm willing to spend, you know, every incremental API call necessary to maximize value. So is there just enough headroom under 20¢ that you don't mind kind of bumping up and down?
Do you ever have projects where you have to go to the customer and say, Hey, actually, I need 25¢ a line, but it'll be worth it because we're gonna do that much more with Opus here and it's gonna make it better or whatever?
safe of a line in the sand has that proven to be for you? Yeah. If if we have to increase prices, we will.
That's like our our sort of going in point to, like, not in the act of contract engagement. Like like, if we if we have to dramatically increase computer, we can dramatically increase compute to get to a 100% autonomy. Like, we'll do that and our customers will sort of coast off of that in the sort of duration of their contract and then we'll have to right size it.
I'm not necessarily worried about the the gross day zero versus the value created day zero. So, like, yeah, it's an attractive business today. Absolutely.
That doesn't matter. What matters is the amount of value left to be created is so high that, like, if we close the gap from 80% of the work to be completed autonomously to 99% of the work completed autonomously in a year from now, like, the net new customers are gonna be so happy, more than happy, to pay more money because they're able to do so much more, right, with the same amount of people. And so as you think about really the delta of value creation that you're thinking about, and you always wanna just push as hard as you can on value creation because the market size for software development so 1,200,000,000,000.
0 in labor, but, like, that is an infinitely expanding market. Meaning, software is designed to fix the problems, productivity of of the customers. And if you're telling me that, like, we're out of problems to solve sort of with software, like, that that's where I don't sort of believe you.
And so our market size is capped by the problems that can be solved with software. The goal is to get to a 100% autonomy and in a way get to, you know, eighty, eighty five, 95%, which is incredibly and deeply valuable for the enterprise that wants to move incredibly fast. Like, they're thrilled with this, thrilled with this level of autonomy today.
And so you can't you can't let a short term pricing decision dictate the technology decisions when the value creation is so high.
Yeah. That makes sense. You mentioned going from 80% to 99% completion.
I guess, for starters, what is the maybe even stepping taking one step back from there. When did you get a new customer? How do you know if this is gonna be an easy or hard engagement?
And what do you have to do? Because I I've you know, in the in the sort of text to SQL world, this comes up all the time even in, you know, relatively small scale things where it's like, okay. It's one thing to look at the schema and be able to write valid queries against it, but it's another thing that there might be three different columns in this table that sort of are like, you know, whatever variable underscore one, underscore two, underscore three, and, like, which one am I supposed to be using and why do these exist and how do they differ in meaning?
So I imagine you must come into a lot of different environments where sometimes there's great documentation and it's reasonably clear what's going on and what you need to do. Other times, probably not so much. Do you have a process for identifying what is genuinely ambiguous and potentially only exists in the heads of the employees at the company?
How do you then have a Do have an AI agent interview those people to extract that information? What's that human side of the onboarding look like? Yeah, it's a great question.
The typical enterprise has very little documentation and very little test coverage. So those are the first things that we actually look to address with Blitzy. And the awesome part about this is by addressing documentation and test coverage with Blitzy, you actually automatically increase the effectiveness of all of the AI code gen tools that are in your stack, which like we highly recommend you have the the individual developer productivity tools as a part of that stack.
So you kind of get like super fast time to value as you're sort of getting implemented. Right? And so as you as you ingest a code base, there's opportunity to provide what documentation you do have.
What's super helpful here is like, if you have domain specific information, like domain as in like, I'm in finance. And when we say this in our code comments, like, this is roughly what it means. But there's an iteration process at ingestion where we're gonna provide you a spec of here's everything as we understand it today within your code base.
Everything that is everything will be technically accurate to what we can surmise technically, but they're the product portions, right, where we're expressing what you're trying to achieve there is where we'll have an iteration period where we'll say, here's the blank slate without any information, and now let's provide the system the information. And not by not starting at zero as in, tell us everything that we don't know. Well, like, here's what the system can technically understand.
Like, all of your dependency diagrams, all the variables are all classified technically correct. Now find out for what from a product perspective we should have as additional context, provide us that, and then we get off and running. Right?
And so that is the process to get to truth from a spec perspective. But you also have to remember that the spec is human readable abstraction of the truth. And because in context, we're always using the actual source of truth as in going back to the source code and pulling that into memory just in time, the spec can be like the product spec can be a little bit inaccurate at the end of the day if you are instantiating new like, if you're if you're moving from, like, c to rust, like, it doesn't necessarily matter if this thing in the spec, which is defined to be human readable, is exactly precise versus the fact that we can go and run the application and then mirror the exact effects on the other end in the case of a language translation.
When you're doing product development, which we do, like, I would say half of our businesses, large scale modernizations, refactors, of our businesses, the steady state product development acceleration, that's when you want to be a little more prescriptive and a little more precise because the system will be using your product expression from a sort of like, hey. We're doing this in finance to then go and make further decisions.
So then when you're going from zero to 80%, 80% plus of the work being done, are there moments when the system loops in a human on the Blitzy team and says like, Hey, I need help with judgment here, or I think this is a question we should be able to get answered, or is it literally from that sort of go time to 80% plus, is that fully autonomous
with It's no from go to pull request. It's from go to pull request. It would be an impossible task to try to insert a human into this process.
The way that you would do this with agents at scale, it just doesn't work. The only thing that stops, which is at the beginning of the process, is if we are missing an environment variable or something from a configuration perspective to actually build and run the application. And so you could find that out.
You could build, run, and then try to be adding some net new piece of functionality that actually calls a service that you you didn't need to run the initial application. And so in that instance, it'll notify the the customer in Blitzy that says like, hey, we need we need access to this service and this wasn't a part of implementation or setup. But from a sort of spec to pull request, it's all agents again.
Sort of has to be.
Yeah. Tyler Cowen rings in my ears all the time. You are the bottleneck.
Yeah. So no doubt, you got I obviously, I was of course, you'd have to keep that to, you know, a relative minimum, but interesting that you have basically zero.
I mean, the point is, right, like, the system can't do something, like, it it goes on to the human report for the enterprise. Don't have to be a 100% off the gate. We pass unit tests, integration tests, end to end tests.
We sort of do all that, but there's whatever remaining work is a part of the ultimate report that goes out to be completed by the team. And like, that's an awesome that's an awesome use of lock code and awesome use of cursors. People pull that report down.
They go deep on whatever edge case that Blitzy could install. They get that ready to go into production. They go to QA.
They go to merge and then they start their next sprint with Blitzy. So the system is sort of designed to account for the fact that we wanna accurately do as much work as we can and then say, great. The human the human pickup is on the back end of this pull request.
So what is that last up to 20% today? You've mentioned edge cases just now. Is that the bulk of it?
Like, just unanticipated scenarios that were ambiguous or otherwise problematic that we're kinda kicking back to the humans not so much because of code, but because of missing judgment that wasn't supplied upfront?
Yes. It's typically items that we think were not captured in the testing strategy, right? And so maybe as like a double click in, right?
Anytime Blitzy touches any file, we're doing unit tests before and after. As we do clusters of context, we're doing clusters of work, we're doing integration tests between services. We're going to the end, we're doing end to end tests at the end.
And so there'll be some instances where, let's say, were like, oh, we passed, like, 73 of 75 tests and, like, for whatever reason, like, let's see what change things to fix item one, and it'll break item two. And it'll change things in item two, and it'll break item one. Right?
And so the system will say, great. Like, we're 73 out of 75 from an end to end testing perspective. These are the sort of files that we're undulating between back and forth.
And like you need to sort of go in as a human and figure out like where there is conflict between these two services because our system is sort of gone back and forth so many times. It's why, like, the task has hit an impossible one, which is kind of funny. You're like, oh, okay.
You're you're asking for two contradictory things in your spec, and and this is, one way to approve that when you're asking for opposite things. Sometimes it's configuration stuff. Sometimes it's just QA work.
And so as a part of the report, we'll break down the tasks remaining and the estimated hours to complete those tasks for the human teams and who would be responsible from a functional skillset perspective. So some testing strategy we didn't get to 100% that we can align on. And then some plan for code review and QA is really included in that, what we call final 20%.
do you get to 99%? Because when I hear that description, it sounds like less something that a new model is gonna be able to handle and more that people just aren't that maximalist, I guess, in terms of really defining for their apps what it is they want.
have large customers that will get a Blitzy poll request. They still go through dual review PR strategy. Like, I I recommend that, like, whatever your QA process is, like, you should continue to do that for the foreseeable future.
But for anything else for regulation purposes, like, won't touch a line of Blitzy code, and and they'll press merge. And so those customers are unbelievable at expressing intent and doing spec driven development. For a large majority of customers that are not as far along that curve, what they'll do is they'll express intent, they'll get a spec, they'll get a code back, and then at the code step, they'll realize, Oh, I didn't consider this outcome even though it was maybe expressing the spec, like I'm moving so quickly.
And so we had to build with the product the ability to refine further from there from the Blitzy platform because people aren't used to today doing two or three months of work, making those decisions. You used to be able to get to month two and then figure out the nuance between month two and month three. And so you have the ability, once you get into the code, realize like, Oh, I didn't express this implementation the way that I would have preferred it.
And it was hard for me to really conceptualize what that would look like between spec and implementation. They can just go back and they can refine that existing pull request and let's say they can provide their updated guidance like, hey, I actually like on the implementation of this portion, like, I wanna use this approach and then it'll run for a much shorter amount of time and sort of adjust the existing PR to their preferences. This just has to do with existing patterns or behavior today.
But what we'll see is folks will go through this flow as they're getting familiarized with Blitzy and refine that larger amount of work once or twice. And then they'll naturally start to get really good at expressing their intent or identifying it at the spec stage because they are going through the muscle of basically being a systems level thinker, a systems level architect, and getting all of that implemented.
So what room for improvement is there on the models? It seems like what you're describing there is still kind of like models could get better, but it's really the humans that need to get better at expressing what they want for you to drive that completion number up toward a 100%. Would model improvement then just translate to even faster execution, even cheaper total inference cost?
Or are there still things that you would highlight that are like, yeah, models are not that good at this and it actually would be really helpful if they were better at it? Yeah. We ultimately want more intelligence.
is fine. Cheaper is fine. But if you think about the instance that I walked through with the different end to end tests going back and forth failing as the code was like recursively going back, ran the application trying to fix it.
But like today, our system will just be like, those two things happened and like, go look at it, human. We're like, we're stuck. Right?
Like, if you had more raw intelligence, it could very prescriptively be like, hey, this is exactly why this is happening. Here's the trade off decision that you need to express to us. Which one of these routes do you wanna go from a trade off decision?
And I can go and implement that. Right? And so when the the trade offs themselves, which are sort of complex, can then be completed or understood by the model itself, like, it could then come back with two different pull requests.
Both of those with the end to end task fully passing, you're like, hey, I took trade off one here and trade off two here. And those are the only two logical trade offs that you could have made as opposed to, like, I couldn't solve this problem, like, over to the human. So we want more intelligence.
It is going to allow us to go further in situations and it'll allow you to be less precise at the spec stage or have to be so forward looking in your technical design.
Yeah. Okay. Interesting.
Seems like we're pretty close though. We're closer than people think. Yeah.
Not that many more special requests there.
I said we've gone pretty deep. I was going to have you join in if there were some nuggets you wanted to drop and add in here. But just as an introduction here, Sid was prolific inventor at NVIDIA.
He's been thinking about building large scale software systems since he was a little boy, actually. He's got great stories about taking computers apart and building software when he was a little kid. And he's really the inventor of a lot of the core technology here at the company being large scale context engineering system that unlocks the ability for us to understand 100,000,000 plus line code bases, long running computer orchestration systems.
Sid Purdeshy, welcome to the Cognitive Revolution.
So, boy, yeah, we have covered a lot of Brian, and Brian has done a great job of explaining a lot. I was just gonna go next to strange behaviors from language models. This is, you know, a theme of my life, this feed, whatever, is that I am both extremely enthused about AI, love what it can do for me, you know, I experience, like, incredible productivity gains all the time.
And then I also pay, you know, reasonably close attention to the data research that shows all kinds of emergent, surprising, and sometimes quite in my view, scary bad behavior from language models. And one big question, of course, in the big picture is like, to what degree can we successfully get AIs to monitor the work of other AIs and get to a point where we can be confident in the system overall, even if some of the models, of the time are doing something that we wouldn't want them to be doing. So interested in what you guys have seen there in terms of like, you know, QA is one dimension of it, of just catching bugs, catching mistakes.
But then there's also famously, I think, Claude three seven was maybe the high watermark of writing unit tests that would just return true and, you know, kind of always, you know, pass when obviously the, you know, the core objective had not been met. How would you guys describe the trends in that? I assume it's improving, but, like, how much have you seen that sort of thing improving?
And then what have you done and how well has it worked to get AIs to detect those kinds of problematic behaviors in one another so that, obviously, at the end of the day, you wanna, you know, deliver something to customers that doesn't have these sort of, you know, fake unit tests. Right. Know, you've really described two patterns there.
strange behaviors from the LLMs and how to control them, and one is the LLM as a judge philosophy. Right? We've been super early with LLMs as a judge.
I think one interesting bit you described there was getting LMs to correct each other's work. What we've seen, you know, is that LMs have definitely have some peculiar behaviors given the conditions. Right?
Assuming everything's constant. So assuming constant temperature, top p, top k, whatever parameters you're using to influence behavior, and assuming constant prompts. If you gave two different sets of LMs, you know, and let's assume they're both following the best prompting guidelines of each vendor, OpenAI and Anthropic, for example, if you gave them the same situation and or condition, you may get different reactions.
Like, for example, we've seen, sweep bench verified. Right? It's like a very popular leaderboard, but we have different scores.
Right? Even though the problems are very much similar in that sense. There are different problems that Anthropic fails on versus what OpenAI fails on.
But if you go to a real world situation where, you know, you have a lot more ambiguity, what you will see is if you run the same, situation even through Claude multiple different times, you may find that it comes up with a different resolution. Right? So for example, it's an ambiguous situation.
There's only one way to solve it correctly. If you run it five times, it may be that cloud is able to solve it correctly one or two times. Right?
And maybe the approaches that it took are slightly more nuanced or different each time. And that is because of how the transformer architecture works. These are like sequence to sequence work models.
They're generating the next set of tokens to answer the question. Right? And they may end up sampling different parts of the space.
That is, like, one way you end up with a difference. Or they may just end up taking a different trajectory. Right?
They could have executed a search query. Like, maybe they maybe with the correct answer, executed used the tool correctly. Right?
I wrote a more elegant search query to find what it was looking for. So because, you know, these are probabilistic models, and there is, at any point of time, there's a probability that the LLM, you know, lands in the right tool and uses it correctly. So that's why you have these differences.
And it is definitely effective. The way to make LLM as a judge effective that we've seen is by using two different models, two dissimilar models to evaluate each other's work. Because what you're doing then is you're not just adjusting for these probabilities, but because of the inherent architectural differences, right, not at a very deep level, but let's say, you know, g p d 5.
2 is definitely built a lot differently. It has a different set of parameters. It has a different size than, OPUS 4.
5. Right? And, it may take a different trajectory.
It may use tools differently. And by that sense, you have now increased the chances that collectively they land at the correct error a correct answer. Right?
Which solves the the problem. That's for LLM as a judge. Right?
It's an important part of landing at the correct answer. But let's talk about the strange behavior aspect that you mentioned. That's really interesting.
So we've been very deep into the Claude family of models and OpenAI. Right? Like, for example, one interesting behavior the old series of models of OpenAI had was that they were very reluctant to use tools.
So these were reasoning models and the first earliest reasoning models, but they did not like to use tools. If you ask the model to search the code base to come up with an answer to something, you find it jumping to conclusions, right, without doing thorough research. So that was a problem with the earlier series of models.
But if you look at the latest OpenAI models like Codex, you know, and or even GPT four. Right? Even at the GPT four was active at the time of o one, right, and o three.
And g p t four was by far the best model when it came to tool calling. Right? We had repeatedly provided feedback to Anthropic that g p t four outshines cloud 3.
5 by a mile. Right? Even though cloud 3.
5, the best thing about Claw 3.5 Sonnet was that it used tools really well. But it was nowhere close to as powerful as or efficient as GPT four and GPT four point zero at tool calling.
Right? But as time went by, that changed quickly. So the Stoned four, Stoned 4.
5, and even 3.7, but not to that extent, were really good at tool calling. The problem with 3.
7 was that it was overeager. So 3.7 made a lot of mistakes when calling tools leading to tool schema errors.
If you didn't validate that correctly, it could cause all kinds of issues in your application. But they quickly fixed that with the four and four point five. But the most interesting, strange behaviors with these models is that they tend to give up as soon as they have real context anxiety is how I like to describe it.
So even though Anthropic says that, and this applies to you in open AI, right? They say that it's a much larger context with the model. So for example, I think g b d four point one, they introduced 1,000,000 tokens, if I'm not mistaken.
But the documentation clearly said that if you exceed 200, you may experience different behaviors. The request will take longer, and the quality may not be that good. For SONET, even though it says it's 1,000,000 token context window, you will notice marked differences in behaviors.
The moment you exceed about a 100 k tokens or even 200 k tokens. Right? It's not just about the price.
The Anthropic charges you differently if you exceed that. But what you will see is that if you're working on a con a complex problem, the model will tend to give up. It'll say things like, okay, because I have these time constraints what time constraints?
I never told you I have to finish in an hour or ten seconds. I just gave you a problem. I expect you to solve it.
But then the model brought in the concept of time and said that because I have these time constraints, and I have been working on this for too long, and by the way, too long was just ten minutes, I have to now wrap up and get a final response. Right? And it gave you the incomplete response.
And then context pressure, you know, this seems too complicated. Let me take a simple approach. Okay?
And that's where you have that behavior that you mentioned. Let me return true. And let's see.
This solves all of the requirements. You said, I should not have any bad code. Check.
I should not have overly verbose code comments. Check. I'm just returning true.
And the test should always pass. Check. I'm just returning true.
It's always gonna pass. Right? So what I've done is philosophically correct.
Like, justifying to itself that its decisions are correct, even though it's what it's doing is blatantly wrong relative to the user's original instructions. But these are due to external factors that the model providers are implementing. When we experience this, we solve this our ways.
There are a number of ways to prevent these issues. One of them being the obvious one, which is prompting. But we start to Anthropic, and Anthropic actually fixed them.
So 4.5 Sonnet had this issue, but 4.5 Opus does not.
It has other kinds of issues again, which as an application builder, you know, you're constantly solving for these issues, right, in production with different labs, different model providers.
vectors in which they would effectively fail for any given use case. And from a from an overarching perspective, like in information theory, they call this concept entropy, right, which is sort of the the the outcome of a probabilistic system is has high entropy in the in LMs or probabilistic systems. And so the goal of the or the the purpose of the system and application layer is to reduce entropy to get to reliable outcomes.
And so, like, the techniques in which we're describing reduce entropy to get closer to a desired truth.
I love that you, mentioned entropy because I I was just thinking Sid had mentioned temperature, and that got me thinking back to history of, like, in my early LLM based application development days, that was a huge lever that I would mess with depending on Well, you were a high temp guy. I can tell. It depends on the use, you know, but, certainly, sometimes.
These days, it seems like, you know, I I think some of the APIs have even removed temperature, and I certainly don't think about it nearly as much as I used to. So that tool to control entropy has kind of gone away. But I wonder what other strategies you guys have for perhaps, like, progressively increasing entropy.
This is something I talked about with the AI coscientist team at Google. They sort of said, in their system, searching through the scientific literature is the main source of entropy that they sometimes need to get off of a local maximum or out of out of a local minimum, whatever you wanna think of it as, and and onto the next, you know, higher hill to that they can then, you know, explore and climb, whatever. What do you guys do?
I would imagine, you know, maybe you want your first pass to be, like, the most yeah. You wanna take your best shot. Right?
I used to in code applications, I would used to turn temperature to zero. I figured I'd want the model's best guess first. But then if that didn't work, well, now maybe I'd turn temperature up.
But again, like, there's a lot of different ways to turn temperature up, like context engineer a little bit different, maybe swap out to a whole other model, do a web search for, you know, some commentary on this problem, whatever. And then hopefully with different, you know, inputs, can maybe eventually land on the right output. Long winded way of saying, how do you ramp up the entropy as needed when the first kind of default answer isn't working?
Yeah. I would say the levers have changed. Right?
And then that's a very helpful, you know thanks for setting that background. Let me add more color to it. So in the beginning, you had temperature.
Right? And for code generation or any use case where, you know, you needed high you you didn't didn't need as much creativity. Right?
You wanted to focus on getting the answer right answer rather than the most creative answer. So the best practice guidance was to bring temperature down to zero or 0.1, 0.
2, depending on the use case. Different model providers had different guidance. Right?
But then as you introduce tool calling, right, with three dot six cloud three dot six and, you know, g p d four, that kind of stuff, having temperature with tool calling created problems because, you know, it may end up you already have the ability to land on a different response because it could take a different trajectory in tool calling. And then you have temperature, which is influencing its behavior, its creativity, and that just created complications. But what changed significantly, what really changed everything was the introduction of reasoning.
Right? So when you had reasoning starting with the o series of models and then eventually with Claude, both OpenAI and Anthropic force you to set temperature to one, which means you don't have any control over the temperature parameter. Right?
So the lever has changed from temperature to the thinking budget. Right? So you may have a 200 k token context window or a 1,000,000 token context window.
And you have between zero to, let's say, how many ever tokens of reasoning the model supports. Typically, you've seen as 32 for office and Sonnet, 64 for some others. Or OpenAI model, that's about 128.
So that's the reasoning budget. So that's how much thinking the model is allowed to do before and or in between responses. Right?
So in the beginning, you only had reasoning, like one set of batch reasoning before the model gave you a response. And then that was it. Right?
It went into its own trajectory. There were hats you had to do together model to think while it's its in its you know, while it's working, while it's calling tools. But then you had what what we call now as interleaved thinking, and so that's what Anthropic calls it, where the model thinks while making every tool call.
Right? They it automatically thinks before making a call. And then there's a budget that you set for the overall amount of thinking, you know, how much of the context window is allowed to use for thinking.
And then there's, you know, weird metrics for, like, prompt caching and whether or not thinking invalidates prompt caching and how much of thinking actually plays into the context when and all that. That's different between different providers. But at a high level, right, the reasoning budget is the level you have.
So if if you allow the model to think for longer, you get higher quality answers. Because essentially, what the model is what is doing while it's thinking is taking a stab at creating a response. Right?
So what happens is, okay, the user is asking me to write code to do x y this, x y z. Let me take it off stab at it. Okay.
This is how I would write it. Then it's write it writes the actual code. It reviews its own code.
And this is all thinking. Right? It hasn't written a single token of output yet.
It's just thinking. And says, oh, but I shouldn't do this because the user asked for this. Right?
And it goes through that process. And then by the time it has either a, you know, exhausted its thinking budget or got a good enough answer to the user's response. It is now ready to write the final response.
Right? So it's essentially what you were doing earlier with setting temperature to zero and maybe running the response five times, maybe with tweaking prompts. The model is doing that by itself, by default, and giving you a higher quality response.
Right? And if you drop parallels to what actually makes code generation work, if you look at, you know, on a base case, let's say, Claude 4.5 offers a really good model in terms of cogeneration, that gets responses right in one shot.
Right? But that is the thinking model. The moment you turn off thinking, five to 10 percentage points drops even on sweepench, which is supposed to be one of the most easiest problems.
And the responses are no longer that high quality. So the theory that we have, essentially the observations that we can see is that the models are really getting better at test time inference, right? They're getting really more efficient at thinking.
The system prompts that all of the model providers are building into the models that encourage the models to think before responding seem to be covering a wide spectrum of cases that allow for multiple things. One, high quality responses, right? Depending on different use cases.
Also more guardrails and ways to safeguard against things like prompt injection or getting the model to say something malicious. There are multiple layers just beyond even prompting that are applicable to achieve this. But we're definitely seeing that the performance gains that we have from models are primarily driven by test time inference along this trajectory, right, of model improvements.
And, Sid, maybe you could comment and I think it's worth with having Sid comment on the path from where we are today towards fully autonomous enterprise software development.
Yeah. So, you know, we the market, when we started, like and we we said that we're gonna bring fully autonomous software development, nobody believed us. Because they you had, what, tens of thousands of tokens of context windows, and models could write 200 to 300 lines of code at a time, maybe a thousand lines.
But it wasn't good. The code wouldn't compile. It wouldn't do what the user said.
The context window is still too small to even cater to large enterprise code bases. Right? And we're not really seeing that change.
So we've had 1,000,000 token context window models for a while. We've had even 10,000,000 token context window models. But the efficient frontier for the effective context window, if you don't want to deal with issues like context pressure, and if you always want, you know, code that compiles, works, runs, or eventually gets to that point, is still less than a 100 k tokens.
Right? So even though we've made a lot of, let's say, progress on quote unquote intelligence, models are more intelligent, they produce high quality responses, you still have the problem of context. And we've solved that and a series of other problems to make this work.
And our perspective is that today, the folks that are getting the best results from something like Claude code are using tons and tons of techniques to get to achieve that. Right? You have Claude.
Md, which contains, let's say, the instructions. You have maybe a series of plugins that you're using, MCPs. You have these prompt templates.
You have a number of other tricks that you're doing. You're you're probably, you know, using Cloud Code to get one output, then you're using switching to codex and maybe getting that getting it reviewed and then pasting that back in. So the the most elite AI users that are getting the 10 x gains are doing a lot of hard work to make it happen.
Right? So have you really changed or improved productivity? Like, I would argue no, because you're still doing a lot of work to get that.
You've changed what you're doing. You're not actually writing the code, but you're spending your time figuring all these tricks out. And every three months, the models change, the prompting practice has changed.
So you're relearning all of that. You're switching between codex and clot code. And there's this constant struggle to make the model work for your code base.
And our vision is has always been that you shouldn't need to do all that. The LLMs are the models. Today, it matters a lot if you're using, let's say, Office or some other open source model, but we're seeing open source catch up.
So it is our theory that LLMs will be commodities. And regardless of that, the point really is that you should be able to go to a model with your work, which is typically, you know, in your project management tool like Jira or whatever that is. You should be able to plan the work, and you should be able to get a PR back that just works.
Right? It has you know, it follows all the coding practices that you outlined. It solves everything in your plan in detail.
It takes into account your past, current, and future road map. It is it has the ability to fix merge conflicts if you if you have a very high velocity team. Right?
It follows the specifications in your Figma, and it just works across your entire code base. It compiles the unit tests, you know, run. There's good code coverage.
There's evidence of testing. This is what you'd expect from a human developer, from a really good human development team. These are the unsaid or quite often very vocal parameters of success criteria for success that are set within the engineering org.
That is what we've set to build with Lizzie. Right? Just PRs and high quality code that works.
And we will spare no action to make sure that we get to the highest level. Right? If it's LLM as a judge, if it's more test time inference, if it's in the future, maybe even test time training to learn about the specific preferences of the user.
The the goal and the vision we have is, again, like I said, code that just works out of the box without you having to do heroics to, you know, get it to solve the success criteria.
That's a funny characterization of how work has changed. I certain it certainly resonates with me. I feel like and I don't code full time, but, you know, I've created many more applications in recent months than I ever used to.
So in some sense, I'm definitely more productive. Like, I made three AI apps for family members for Christmas presents this year, for example. Oh, that's awesome.
But the it is definitely true that I'm, like, always on either hands on or, like, on Twitter looking for, you know, the latest tips and tricks. And that definitely it it is striking that, like, for all of the labor saving nature of the technology, the people that are getting the most from it are probably working as hard or harder than anyone. Maybe that changes.
Maybe it just continues this way until the singularity. I don't know. I wanna do a quick double click on test time training.
This has been a, you know, obviously highly related to, like, continual learning, which has obviously been a big part of the discourse recently. And, you know, there's been some really interesting advances in that space with respect to much more contained puzzles like RKGI type puzzles, that kind of thing. We talked a little bit earlier, Brian and I did, about just kind of is there any point to using open source models?
Is there any point to fine tuning? It sounds like today, basically, the reality is, like, the frontier models are kind of the best. You wanna work with the best.
You can't really fine tune the best, and so it's usually not really worth it. Kimi k two or k k 2.5, I should say, just came out and, you know, with the communities obviously still digesting exactly where that is, it does seem like all Chinese models to be like a little bit in in as much as I don't think it's actually truly the best, which is what their, you know, their benchmark graphics would have you believe.
But I have used it a bit, and others also seem to be reporting the same thing, but it does seem to be, like, really good, and that the gap is seemingly quite small between it and, you know, whatever your favorite model is for your favorite use case. So does this change the outlook? You know, I guess because, like, whether fine tuning is worth it or not would seem to depend a lot on the gap between what you can fine tune and what you can't.
And this gap seems to have, like, potentially narrowed quite a bit. So I'm kinda wondering if you're like, oh, hey. This maybe changes the the trade offs or the the analysis, and maybe we do wanna get into that sort of thing now.
My perspective on fine tuning has always been, you know, very classical. It's in the sense that you should only fine tune if you have a very narrow use case that you have you believe by fine tuning, you will, you know, get much better performance. And that the rate of that performance gain is much more significant than waiting for another three months till the next series of models comes out.
You also lose things when you fine tune. Right? So you lose the ability of the model to generalize.
And it's not always a given that when you fine tune, performance will increase. Right? Because you don't really have let's say, you don't really have necessarily have access to the original dataset.
And even if you did, you cannot really create a map between what was the influence of specific parts of the dataset on the model's behavior. Right? So that's why fine tuning, especially when you don't have large amounts of data, And if you don't have a very clear niche use case that hopefully has historically been successful with maybe a previous family of models, it's always like drawing from a pack of cards.
It's it's always, you know, a risky game. Now, if you talk about models and their ability to get better, there's also another challenge there, which is, for example, Gemini, and let's say, OpenAI are very close in terms of the score on Suitebench. And in some cases, it has been proven that there are models that beat Anthropic on code generation, right, in very specific use cases.
Even then, in the real world, if you compare Gemini, OpenAI, and Anthropic, they are very different in terms of the code generation, in terms of the use cases for code generation that you would want to apply you you want to apply them. They're very distinct. Right?
Even though they're creating similar ish scores. The point really is that the current leaderboards that we have are insufficient. Right?
There's a lot of test set leakage. There's a lot of, you know, just just just broad insufficiency from the standpoint of generalizing to a typical use case. Like, for example, a number of leaderboards rely on the opinions of humans.
For example, they'll give you a and b. Both have code to solve a specific use case. And you're supposed to select, you know, which one you feel feel did a better job.
Right? Now, depending on my mood, I could have chosen either. Right?
But if you don't define clear success metrics that would apply in an enterprise setting, you are not creating a very effective leaderboard. Right? Because the leaderboard then is only the perception.
Maybe in someone's perception, writing a lot of comments is very helpful. Oh, because I read the comments and answered the code. In someone else's perspective, like, this is overwhelming.
I cannot read that many comments when I'm trying to understand the code. It's just distracting. Right?
So that so leaderboard design is actually a complicated problem. And even you mentioned Arc AGI, right? The fun part is that Frank Roy Scholle, right?
The creator of that leaderboard. He talks about how when LLMs got to 70% plus on that leaderboard, everyone said, oh, I guess AGI is here. But then he brought in Arc AGI two, which didn't really change the difficulty of the problems.
Right? It just had different problems of the same kind. So if you were to give RKGI to a five year old and then RKGI two to a five year old, they would perform the same relatively on both leaderboards.
But an LLM that scores 76% on RKGI one would not even score 20% on RKGI two when it just came out. Right? Even though you have massive gains in intelligence and gains relatively on paper on the leaderboard, from a real world scenario, just because of how LLMs work, you don't will have a change in the LLMs ability to learn something that it has seen for the first time.
The highlight of ARC AGI two is that these are problems that are different than an LLM would have seen in its training set. They're not harder, They're just different. And then there's two definitions, broad definitions of AGI.
If you focus on the academic definition that Francois Scholle is alluding to, he says it's the ability of the model to learn patterns and adapt to them on the fly, patterns that it has not seen before, apply its intelligence to a new problem and be able to solve it. But the and the other definition of AGI that's more popular that, you know, that I've seen floating around much more often is just human level performance on a broad range of tasks. Right?
By definition and by real world results, these are fundamentally different constructs, right? And the problem that I see is that we've gravitated far more towards the latter, but I've ignored the former. And that is why I'm bullish on test time training because what test time training promises is if we detect, let's say, a pattern that the LM is not familiar with, right, where it's not going to perform well, we can give it more context about solving that particular problem such that it does better and produce better results.
Now, in any problem in general, it's very hard to know whether or not you're going to get the correct answer because you don't have a metric. Like for example, with code, you can compile the code and you know whether or not you're working on the correct answer. Or you can define unit tests that you can execute to learn if you're on the right track.
That doesn't apply to general scenarios. So specifically in case of code, I'm bullish that you can implement test time training in such a way that you improve the odds of getting to the correct answer. But even then, much many of the techniques I I I've read papers on, you know, test time training.
We're not at the point where, at the moment, it's practical to implement that. But I definitely see that becoming a real thing in in the next one to two years.
Yeah. This will be something I'm watching very closely to see how that develops as well. I think the two last things I wanna talk about are just security briefly, because I know that's obviously a huge concern of enterprise, you know, customers broadly.
Right? They they don't wanna be, importing much of insecure code into their environment. And, of course, LMs have a reputation for writing insecure code.
The other thing I wanna talk about in maybe closing is kind of the labor market, in light of all these changes. And that could also include, like, who you are looking to hire and, you know, as much kind of information as you would be willing to share about your hiring practices. But on the security side, I guess, like, where are we today in terms of security?
What what have you found to work? And do you think this problem is going away? I mean, I've seen some research suggesting that, like, formal methods can be used to both, like, validate code that LMs write and then also as a reward signal that should get them to be, like, writing far more secure code far more often anyway.
So I my sense is that, you know, like many other things of, like, you know, LMs can't reason or they can't do this, they can't do that. I think this is probably gonna be something we'll leave behind, but I know you guys have also had to solve you know, to do, you know, at least the best solution you can before the models themselves have kind of been properly trained. So I guess all that to say, what's your view on the security of LLM generated code?
Yeah. I think, you know, it's a shared responsibility is the first thing I would like to say. One is there are many behaviors of the LLM that can be influenced and prevented at the training step itself.
So if you look at the reports that Anthropic, OpenAI, Google, all of them put out when they launch a new model, they test against these behaviors. And these behaviors could be getting the model to do something it should not be doing. Like, for example, let's say, I want to I need a recipe to create a weapon.
Right? If I if I if I put that as a prompt, hopefully, the model does not respond with the correct answer. But what people have done typically is to fool the model, framed it as an emergency situation such that if the model provided the recipe, it would save someone's life or, you know, it it would it would make a positive change.
So try to game the reward function that may have been defined for the model and get a response. Right? So prompt injection is one of the ways where they've been able to do that.
And there are several other ways to jailbreak what the LLM can do. But ultimately, it comes down to system design. Alright?
For example, security considerations would be different for something like clot code, where you interact directly with the model as opposed to Plitsy, where you have a plan and then you execute that plan and then Plitsy decides whether or not to honor the instructions and in what way to deliver the code. Right? So when you're not interacting directly with the model, the attack vectors change.
That is one. But specifically for the code generation use case, so if you there's the one one aspect of security is causing harm or using content that is is not considered clean for that use case. And like I said, the the the vectors there are the models typically refuses to send you a response.
Or if it does, you know, you have to set different kinds of guardrails depending on the system. But the in terms of software itself, it could just be, you know, having an outdated, let's say, knowledge reference. Most models right now have, I believe, January 2025 as the knowledge cut off.
And there have been a number of libraries that got updated with security fixes after that date. Right? So if your model did not look up the web when using an open source library or it did not realize that this was, you know, a bad practice.
It's a bad practice in code. It was a new newly discovered knowledge. It did not source the web to understand that.
It is likely that your code generated using the LLM has these security flaws. Right? But thankfully, as all things go in software, you have a number of ways to detect and prevent that as far as the software item is considered.
Right? One is having defensive tests within the code. So if you know some of the attack vectors that your application and or product is vulnerable to, you can define tests and you can use AI to create these tests, have them in the code, and make sure that your code does not have those flaws.
Right? So every time you run a job, you make sure that tests will pass, so you add more tests as needed, etcetera. Two is having tools that check against known vulnerabilities.
Right? So there there are a number of such rules. Sentry is is one that comes to mind.
There there are a number of others that report vulnerabilities, CVCs, in the code. And then you can use AI to address those vulnerabilities. Right?
So in in in Blitzy, we run a precheck to detect for security flaws, and we address them before creating the PR so that you don't have to go through that process. But at a high level, because you have access to such tools and different, you know, languages, frameworks have different set of tools, You can provide Blitzy the ability to check for them. And you can also do that with other tools.
Right? Just just code is significantly easier to protect from security gaps. And I definitely believe from the standpoint of coding, we will have tools or you have the ability to configure tools that prevent security issues.
So this has been outstanding, and I really appreciate how much you guys have been willing to share. I'm gonna take the transcript of this episode and turn it into a to do list for my own personal AI infrastructure project, and, we'll start implementing. Last thing I wanna talk about for just the couple minutes in closing is the effects that all this is having on people.
There was a paper, you guys probably saw, it ended up being fake, but I think it was kind of an interesting it was like, it resonated, which was maybe the most interesting thing about it. It was a supposedly, it was about materials scientists at some, you know, big company, and supposedly they had introduced AI and they'd become more productive, but job satisfaction had dropped. And again, this turned out to be fake.
But I think it was shared so much because people felt like they it satisfied their expectations if nothing else. Right? So interested in how you see, the role of the software engineer changing.
Do the software engineers like how it's changing? And then there's also, of course, this big question around junior developers. Like, you know, is the death of the junior developer much exaggerated?
Are you guys hiring junior developers? What are you looking for in your hiring? If you wanna tell us a little bit about, like, what your comp looks like, that would be very interesting.
But understand if that's not something you wanna talk about on a podcast. But, yeah, what do you think of the impacts? What what's under and overhyped when it comes to impacts on the roles people have and the the labor market more broadly?
I think if you think of it from the standpoint of short term, medium term versus long term. Right? Then the short term and the immediate term, what happens is code is now a commodity.
Right? In the in the in the olden days, if someone had written a script to do something, that was and then that was a very complicated or boring task. That script was like gold.
You know, you would pursue that developer, be friends with them in the hopes that they would maybe share that script with you. That they, you know, got after scourging through hundreds of pages of documentation and just raw experience of having done that numerous times. Now I can just prompt I can just go to cloud, prompt it, get a script back, and just do something.
But if I'm a junior developer, I won't be able to look at the script and know if this would destroy my production database or if it would do what I'm expecting it to do or if it would produce unintended effect a b c. Right? And that is the danger.
That is the difference between using AI and not using AI to me, really. Right? If you if you can't tell that difference.
So in the short term, the market unfavorably, you know, is weighted towards senior developers. Because when you give a senior developer access to AI and, you know, writing code, you you you don't have to go through the boring mechanical process of writing a lot of code or even copy pasting a lot of code. Right?
Just feed it to AI, get code back, review it, and and get done with it. But then, as AI gets better, as the chatbots get better, as the model gets better, as the tools get better, right, at preventing unexpected, unintended outcomes, at understanding intent, and at writing code that satisfies the intent. Right?
What's gonna happen is junior developers, and this is already happening. Right? Mid level developers are performing at the level of senior engineers just because code is a commodity.
Right? And mid level developers, they spend some time with the code. They know what a bad action looks like.
They know how to make corrective measures, and they still are producing velocity gains. Right? So the two advantages that senior developers have were were, like, depth of knowledge, maybe speed.
Right? And just the ability to understand how the system works. All of that, now you can get from AI.
Right? You can connect plot code or Blitzy or any of the tool to your code base, and you have an accurate understanding of what the code is like. You know, there may there may be hallucinations along the way, but that's changing quickly.
Speed, like, cannot beat AI in speed. Right? Like, you you connect cerebrass to some model, you're gonna get very fast tokens.
And even the labs at a baseline have a very Cloud 4.5 is really fast. Alright?
So you you cannot beat the models on speed. And just knowledge bit. Alright?
If the model is intelligent enough, like I said, to understand the intent, you're gonna solve that problem as well. So because of that, I believe in the medium to longer term, you will have junior developers that are far more valuable in terms of they are cheap to hire. There's a ton of them that are, you know, now doing computer science degrees and are not going to be employed just because at the the rate at which enterprises are hiring has gone down.
And in the short term, they are favoring more senior talent. But these developers, assuming they upscale on AI, continue to remain in the industry using the tools, they are now going to be much better, you know, at at getting work done. So the talent as it ages out, you know, is going to be replaced by more junior developers.
So that's that's a theory I have. Now in terms of hiring, we've hired senior, junior, and mid level developers, And we have a mix of them. They're they're obviously doing different things.
The challenge we have is as a startup, we need to produce a lot of code quantity. Right? And it has to have quality.
Time is a very critical factor. Right? So for us, we obviously have shared the bias to initially hire a lot of senior developers.
But what we quickly realized is for tasks that don't really require senior developer input. It's not a large code base. It's not really a cutting edge technology.
Right? It's something that is no well known. For example, running Blitzy on a leaderboard.
Right? Writing scripts that automates that process. We have hired as interns high schoolers last summer to do this.
Right? And we have junior developers who are research engineers that are using, you know, Blitzy to run this. They are using AI tools to run all these operations.
And they are we can hire them at a very favorable compensation. Right? And that's gonna be in assets.
So just because the market is really flipping on its head, the expectations in terms of salaries for software developers, unfortunately, is going to go down. The junior developers who know AI they don't have to unlearn. Right?
Biggest challenge with some of the more senior folks is that they have to learn to trust AI. And the biggest hesitation for any senior developer who's been around long enough is that I can't trust anything else other than myself. Right?
If if I don't write the code, I can't trust it. And that's like this psychological hurdle, I would say, that the senior developers have to adapt to AI. The ones who do adapt are going to be immensely successful.
But then there's going to be that challenge. And that I believe is a gap that the mid level developers, once they've known enough, and the junior developers will fill, especially because of favorable cost equation. And then you asked about, you know, the salary ranges.
So, you know, we've we have a number of open positions, and the salary range is anywhere between 100 k to 300 k, right, from a from a cash standpoint, and equity is separate in that discussion. And there's always room for us to pay more for the right talent. And it's it's it's it's interesting how the definition of right talent has changed.
Typically, you paid more for someone who had many years of experience and has built many systems. But now, if you if you were to run a hackathon, you'd be very surprised as to who is actually winning that hackathon. You have high schoolers who are extremely adept at using tools, at prompting.
And often, a good prompt and a good tool can beat out what a senior engineer can do in the same span of time, especially if you're talking about greenfield development. Hands down, someone with few years of experience can do a lot better just because of the psychological gaps. Right?
But if you're talking about, like, legacy enterprise software where you have to check a lot of boxes, you need a lot of experience, you think something is right, but you realize only after being bitten by doing something wrong. You know, that's a space where senior engineers will continue to thrive.
I love it. That's a great answer. And, again, I appreciate how much you have been willing to share.
Outstanding conversation. I'm looking forward to, getting under the hood with Blitzy, and, this is certainly a space that we will continue to watch closely. For now, Brian Elliott and Sid Fardesci, CEO and CTO at Blitzy, thank you both for being part of the cognitive revolution.
Thank you. If you're finding value in the show, we'd appreciate it if you take a moment to share with friends, post online, write a review on Apple Podcasts or Spotify, or just leave us a comment on YouTube. Of course, we always welcome your feedback, guest and topic suggestions, and sponsorship inquiries either via our website, cognitive revolution dot a I, or by DMing me on your favorite social network.
The Cognitive Revolution is part of the Turpentine Network, a network of podcasts, which is now part of sixteen z, where experts talk technology, business, economics, geopolitics, culture, and more. We're produced by AI Podcasting. If you're looking for podcast production help for everything from the moment you stop recording to the moment your audience starts listening, check them out and see my endorsement at aipodcast.
ing. And thank you to everyone who listens for being part of the cognitive revolution.
Shared via Hopper