Building ambitious software — Jonathan Kelley, Dioxus Labs & Cognition
Read full transcript 17 segments
-
Hello, my name is Jonathan Kelly and Hello, my name is Jonathan Kelly and today we're going to talk about what it today we're going to talk about what it today we're going to talk about what it means to build ambitious software in the means to build ambitious software in the means to build ambitious software in the age of AI. age of AI. age of AI. 5 years ago, I made the first commit 5 years ago, I made the first commit 5 years ago, I made the first commit ever to a project called Diosis. I used ever to a project called Diosis. I used ever to a project called Diosis. I used the last summer I had as an the last summer I had as an the last summer I had as an undergraduate and instead of getting an undergraduate and instead of getting an undergraduate and instead of getting an internship at Google or doing research internship at Google or doing research internship at Google or doing research in AI like many of my friends at the in AI like many of my friends at the in AI like many of my friends at the time, I spent it exploring an idea I had time, I spent it exploring an idea I had time, I spent it exploring an idea I had for a crossplatform app framework for a crossplatform app framework for a crossplatform app framework written in the Rust programming written in the Rust programming written in the Rust programming language. language. language. In 2021, Rust was still pretty niche, In 2021, Rust was still pretty niche, In 2021, Rust was still pretty niche, but the ecosystem was growing, the but the ecosystem was growing, the but the ecosystem was growing, the tooling was improving, and the pitch of tooling was improving, and the pitch of tooling was improving, and the pitch of native performance, a solid type system, native performance, a solid type system, native performance, a solid type system, and simple cross compilation really sold and simple cross compilation really sold and simple cross compilation really sold me. It's extremely nerdy. me. It's extremely nerdy. me. It's extremely nerdy. The idea for Diosis was straightforward. The idea for Diosis was straightforward. The idea for Diosis was straightforward. What if we had an crossplatform app What if we had an crossplatform app What if we had an crossplatform app framework? Instead of waiting through framework? Instead of waiting through framework? Instead of waiting through dozens of tool chains, programming dozens of tool chains, programming dozens of tool chains, programming languages, and idees, what if we simply languages, and idees, what if we simply languages, and idees, what if we simply wrote our all of our apps in Rust using wrote our all of our apps in Rust using wrote our all of our apps in Rust using HTML and CSS as the markup language?
-
HTML and CSS as the markup language? HTML and CSS as the markup language? This was back in the day 2021 where This was back in the day 2021 where This was back in the day 2021 where React Native was janky, Flutter was too React Native was janky, Flutter was too React Native was janky, Flutter was too slow, and neither performed well with slow, and neither performed well with slow, and neither performed well with native APIs. On the flip, with Rust, we native APIs. On the flip, with Rust, we native APIs. On the flip, with Rust, we could build native abstractly with no could build native abstractly with no could build native abstractly with no VM, no IPC, no JavaScript. And if we VM, no IPC, no JavaScript. And if we VM, no IPC, no JavaScript. And if we used a little bit of HTML and CSS for used a little bit of HTML and CSS for used a little bit of HTML and CSS for the UI and take some inspiration from the UI and take some inspiration from the UI and take some inspiration from React for the reactivity, we could reuse React for the reactivity, we could reuse React for the reactivity, we could reuse vast amounts of web components and web vast amounts of web components and web vast amounts of web components and web tooling. The goal was an extremely tooling. The goal was an extremely tooling. The goal was an extremely powerful app framework that was still powerful app framework that was still powerful app framework that was still quite familiar to the average developer. quite familiar to the average developer. quite familiar to the average developer. Sounds easy, right? Well, as they say, Sounds easy, right? Well, as they say, Sounds easy, right? Well, as they say, we choose to build an app framework from we choose to build an app framework from we choose to build an app framework from scratch, not because it's easy, but scratch, not because it's easy, but scratch, not because it's easy, but because we thought it would be easy. because we thought it would be easy. because we thought it would be easy. In reality, trying to challenge React In reality, trying to challenge React In reality, trying to challenge React Native and Flutter is extremely Native and Flutter is extremely Native and Flutter is extremely ambitious. In 2021, there were very few ambitious. In 2021, there were very few ambitious. In 2021, there were very few off-the-shelf components you could use off-the-shelf components you could use off-the-shelf components you could use to build Dioxis. Everything from to build Dioxis. Everything from to build Dioxis. Everything from reactivity to font rendering to hot reactivity to font rendering to hot reactivity to font rendering to hot reloading and application bundling had reloading and application bundling had reloading and application bundling had to be built from scratch. There's to be built from scratch. There's to be built from scratch. There's nothing we could use. For us, tasks like nothing we could use. For us, tasks like nothing we could use. For us, tasks like building a web browser were just building a web browser were just building a web browser were just necessary steps along the way.
-
necessary steps along the way. necessary steps along the way. Now today in 2026, Diosis has achieved Now today in 2026, Diosis has achieved Now today in 2026, Diosis has achieved and far surpassed its original mission. and far surpassed its original mission. and far surpassed its original mission. We support all the features we We support all the features we We support all the features we originally set out to build from originally set out to build from originally set out to build from crossplatform support to native crossplatform support to native crossplatform support to native rendering to Rust hot reload and bundle rendering to Rust hot reload and bundle rendering to Rust hot reload and bundle splitting. We've basically reinvented splitting. We've basically reinvented splitting. We've basically reinvented and improved the entire app development and improved the entire app development and improved the entire app development stack. stack. stack. Users can ship a powerful full stack web Users can ship a powerful full stack web Users can ship a powerful full stack web application in the exact same codebase application in the exact same codebase application in the exact same codebase sharing components as their iOS and sharing components as their iOS and sharing components as their iOS and Android apps. Android apps. Android apps. The Daxis project now has nearly 37,000 The Daxis project now has nearly 37,000 The Daxis project now has nearly 37,000 stars on GitHub with millions of stars on GitHub with millions of stars on GitHub with millions of downloads. Apps built in Dioxis are downloads. Apps built in Dioxis are downloads. Apps built in Dioxis are rolled across the globe with a rolled across the globe with a rolled across the globe with a cumulative estimate of over 200 million cumulative estimate of over 200 million cumulative estimate of over 200 million end users. Users have built things like end users. Users have built things like end users. Users have built things like AI assistance, software for voting, data AI assistance, software for voting, data AI assistance, software for voting, data science tools, and even collision science tools, and even collision science tools, and even collision avoidance system for satellites in avoidance system for satellites in avoidance system for satellites in space. space. space. We've put a ton of effort into making We've put a ton of effort into making We've put a ton of effort into making Dioxis as userfriendly as possible.
-
Dioxis as userfriendly as possible. Dioxis as userfriendly as possible. Fewer files, build tooling, hot Fewer files, build tooling, hot Fewer files, build tooling, hot reloading, asset optimization, reloading, asset optimization, reloading, asset optimization, everything you need to easily ship everything you need to easily ship everything you need to easily ship across all platforms. across all platforms. across all platforms. Because Dioxis apps are written in Rust, Because Dioxis apps are written in Rust, Because Dioxis apps are written in Rust, they are structurally very simple. You they are structurally very simple. You they are structurally very simple. You rarely need to drop into platform rarely need to drop into platform rarely need to drop into platform specific code because all rest projects specific code because all rest projects specific code because all rest projects are alike. It's very easy for developers are alike. It's very easy for developers are alike. It's very easy for developers to dive into a new project. You can to dive into a new project. You can to dive into a new project. You can completely skip annoying build system completely skip annoying build system completely skip annoying build system setup. All you need is a main.rs to get setup. All you need is a main.rs to get setup. All you need is a main.rs to get started. started. started. One of the most ambitious goals we had One of the most ambitious goals we had One of the most ambitious goals we had for ship lightweight but fully featured for ship lightweight but fully featured for ship lightweight but fully featured HTML and CSS rendering engine called HTML and CSS rendering engine called HTML and CSS rendering engine called Blitz. We extracted the browser grade Blitz. We extracted the browser grade Blitz. We extracted the browser grade CSS engine out of Firefox, built our own CSS engine out of Firefox, built our own CSS engine out of Firefox, built our own HTML DOM, and developed a hybrid GPU HTML DOM, and developed a hybrid GPU HTML DOM, and developed a hybrid GPU rendering pipeline. rendering pipeline. rendering pipeline. Compared to Electron apps, which are RAM Compared to Electron apps, which are RAM Compared to Electron apps, which are RAM and storage hogs, Blitz apps are and storage hogs, Blitz apps are and storage hogs, Blitz apps are lightweight, coming in at less than 5 lightweight, coming in at less than 5 lightweight, coming in at less than 5 megabytes bundle sizes and consume less megabytes bundle sizes and consume less megabytes bundle sizes and consume less than 50 megabytes of RAM at runtime. And than 50 megabytes of RAM at runtime. And than 50 megabytes of RAM at runtime. And they're pretty cool. You can write your they're pretty cool. You can write your they're pretty cool. You can write your own custom components, spinning cubes, own custom components, spinning cubes, own custom components, spinning cubes, you can customize the browser however you can customize the browser however you can customize the browser however you want. It's a very cool project.
-
you want. It's a very cool project. you want. It's a very cool project. We also worked on a tool called We also worked on a tool called We also worked on a tool called Subsecond uh which is our generic hot Subsecond uh which is our generic hot Subsecond uh which is our generic hot reload engine for Rust, C and C++. reload engine for Rust, C and C++. reload engine for Rust, C and C++. Subsecond watches your code for edits, Subsecond watches your code for edits, Subsecond watches your code for edits, recompiles parts of the code that recompiles parts of the code that recompiles parts of the code that changed and patches the running app in changed and patches the running app in changed and patches the running app in place all in 100 100 milliseconds. This place all in 100 100 milliseconds. This place all in 100 100 milliseconds. This was an incredibly difficult technical was an incredibly difficult technical was an incredibly difficult technical challenge and is the only hot reload challenge and is the only hot reload challenge and is the only hot reload engine for native compiled code to have engine for native compiled code to have engine for native compiled code to have such wide language and runtime support. such wide language and runtime support. such wide language and runtime support. It works on every major system and even It works on every major system and even It works on every major system and even the web is compiled into web assembly. the web is compiled into web assembly. the web is compiled into web assembly. No one has done this before because these projects we've worked on because these projects we've worked on along the way over the past 5 years are along the way over the past 5 years are along the way over the past 5 years are incredibly ambitious and are the result incredibly ambitious and are the result incredibly ambitious and are the result of a tiny but over every line of code by with our own over every line of code by with our own two eyes and maintain a frequent but two eyes and maintain a frequent but two eyes and maintain a frequent but ambitious release cadence. ambitious release cadence. ambitious release cadence. The most amazing thing, every line of The most amazing thing, every line of The most amazing thing, every line of code in Dioxis until very recently has code in Dioxis until very recently has code in Dioxis until very recently has been painstakingly written by hand.
-
been painstakingly written by hand. been painstakingly written by hand. Why do I say recently? Well, if you Why do I say recently? Well, if you Why do I say recently? Well, if you aren't aware, software engineering and aren't aware, software engineering and aren't aware, software engineering and development has taken a massive turn in development has taken a massive turn in development has taken a massive turn in the past 6 months. AI coding agents got the past 6 months. AI coding agents got the past 6 months. AI coding agents got really, really good. And specifically, really, really good. And specifically, really, really good. And specifically, they got really good at Rust. Our team, they got really good at Rust. Our team, they got really good at Rust. Our team, a bunch of cracked rest engineers, has a bunch of cracked rest engineers, has a bunch of cracked rest engineers, has been quite skeptical of AI for a long been quite skeptical of AI for a long been quite skeptical of AI for a long time. We had not felt the AGI, so to time. We had not felt the AGI, so to time. We had not felt the AGI, so to speak. And we definitely weren't using speak. And we definitely weren't using speak. And we definitely weren't using AI in our day-to-day work. We thought AI in our day-to-day work. We thought AI in our day-to-day work. We thought the two things were incompatible, the two things were incompatible, the two things were incompatible, shipping high quality code shipping high quality code shipping high quality code tools. Seeing them get really good at tools. Seeing them get really good at tools. Seeing them get really good at Rust was a huge surprise to us. So, we Rust was a huge surprise to us. So, we Rust was a huge surprise to us. So, we were finally excited. were finally excited. were finally excited. With this newfound excitement, we With this newfound excitement, we With this newfound excitement, we started building our team. maxed out our started building our team. maxed out our started building our team. maxed out our cloud code subscriptions, turned out cloud code subscriptions, turned out cloud code subscriptions, turned out tens of thousands of lines of Rust, and tens of thousands of lines of Rust, and tens of thousands of lines of Rust, and built all sorts of features we had long built all sorts of features we had long built all sorts of features we had long wished to have. Unfortunately, very wished to have. Unfortunately, very wished to have. Unfortunately, very little of the code cleared our quality little of the code cleared our quality little of the code cleared our quality bar of should we merge this in. bar of should we merge this in. bar of should we merge this in. Thousands of lines of new features, bug Thousands of lines of new features, bug Thousands of lines of new features, bug fixes, and integrations we had wanted fixes, and integrations we had wanted fixes, and integrations we had wanted for years sat there and draft and for years sat there and draft and for years sat there and draft and continue to sit there and draft. We continue to sit there and draft. We continue to sit there and draft. We definitely did not know how to properly definitely did not know how to properly definitely did not know how to properly wield these tools and it was way too wield these tools and it was way too wield these tools and it was way too easy to become what we call a slop easy to become what we call a slop easy to become what we call a slop cannon.
-
cannon. cannon. Um, so we reflected a bit and studied Um, so we reflected a bit and studied Um, so we reflected a bit and studied what worked and what didn't. to read, easy to write, good tools, good to read, easy to write, good tools, good error messages. The coding agents error messages. The coding agents error messages. The coding agents generally don't care about this. We generally don't care about this. We generally don't care about this. We tried to make Rust easel with Dioxis still with Dioxis still because Rust is harder to write. The because Rust is harder to write. The because Rust is harder to write. The coding agents deal with the development coding agents deal with the development coding agents deal with the development burden for you. They handle the edge burden for you. They handle the edge burden for you. They handle the edge cases and they fight the borrow checker, cases and they fight the borrow checker, cases and they fight the borrow checker, saving you from the cognitive burden of saving you from the cognitive burden of saving you from the cognitive burden of writing Rust apps. The learning curve writing Rust apps. The learning curve writing Rust apps. The learning curve which we fought to reduce is now a which we fought to reduce is now a which we fought to reduce is now a feature. feature. feature. So throughout the process of adopting So throughout the process of adopting So throughout the process of adopting the coding tools to work on Dioxis, we the coding tools to work on Dioxis, we the coding tools to work on Dioxis, we learned a wide array of lessons. learned a wide array of lessons. learned a wide array of lessons. Many of the thing the coding agents do Many of the thing the coding agents do Many of the thing the coding agents do really well today and many things they really well today and many things they really well today and many things they just aren't there yet. So the next just aren't there yet. So the next just aren't there yet. So the next couple slides I want to talk about some couple slides I want to talk about some couple slides I want to talk about some of the things we learned and what it of the things we learned and what it of the things we learned and what it means to to build ambitious software means to to build ambitious software means to to build ambitious software projects in the age of agent coding.
-
projects in the age of agent coding. projects in the age of agent coding. Um, it's important to talk about first Um, it's important to talk about first Um, it's important to talk about first what it means to build an ambitious what it means to build an ambitious what it means to build an ambitious software project. Um, there's many software project. Um, there's many software project. Um, there's many different types of software out there. different types of software out there. different types of software out there. Depends on what you ship every day. Um, Depends on what you ship every day. Um, Depends on what you ship every day. Um, you might be doing research and the you might be doing research and the you might be doing research and the quality of your code isn't the most quality of your code isn't the most quality of your code isn't the most important thing. You might be doing important thing. You might be doing important thing. You might be doing prototyping code and and iterating fast, prototyping code and and iterating fast, prototyping code and and iterating fast, moving quickly is important. You might moving quickly is important. You might moving quickly is important. You might be building applications which people be building applications which people be building applications which people don't see the code internally. They just don't see the code internally. They just don't see the code internally. They just see what it looks like on the outside. see what it looks like on the outside. see what it looks like on the outside. But for us and for Diosis, But for us and for Diosis, But for us and for Diosis, we care about a few different things. we care about a few different things. we care about a few different things. Primarily, of course, we care that our Primarily, of course, we care that our Primarily, of course, we care that our code works all the time and that if it code works all the time and that if it code works all the time and that if it breaks, we can easily fix it. I think breaks, we can easily fix it. I think breaks, we can easily fix it. I think this is something people don't think this is something people don't think this is something people don't think about enough these days that you need to about enough these days that you need to about enough these days that you need to continue to build easily maintainable continue to build easily maintainable continue to build easily maintainable code and like the velocity that you ship code and like the velocity that you ship code and like the velocity that you ship lays down on this substrate that you've lays down on this substrate that you've lays down on this substrate that you've built and if the substrate isn't good, built and if the substrate isn't good, built and if the substrate isn't good, nothing you build on top is going to be nothing you build on top is going to be nothing you build on top is going to be good. good. good. Secondarily, we care about shipping new Secondarily, we care about shipping new Secondarily, we care about shipping new features.
-
features. features. Our road map is really long. It extends Our road map is really long. It extends Our road map is really long. It extends into the far future. There's dozens of into the far future. There's dozens of into the far future. There's dozens of features we still have yet to build for features we still have yet to build for features we still have yet to build for Dioxis. And we want to ship these Dioxis. And we want to ship these Dioxis. And we want to ship these quickly to keep up with the times, but quickly to keep up with the times, but quickly to keep up with the times, but we also want to maintain quality. When we also want to maintain quality. When we also want to maintain quality. When building a large ambitious project like building a large ambitious project like building a large ambitious project like Deiosis, there's a constant tension of Deiosis, there's a constant tension of Deiosis, there's a constant tension of shipping fast, adding new features, and shipping fast, adding new features, and shipping fast, adding new features, and then also making sure you don't break then also making sure you don't break then also making sure you don't break things and that in a patch release, things and that in a patch release, things and that in a patch release, you're not like breaking APIs that you're not like breaking APIs that you're not like breaking APIs that millions of people rely on. For a millions of people rely on. For a millions of people rely on. For a project that people build their project that people build their project that people build their businesses on, there's also a high bar businesses on, there's also a high bar businesses on, there's also a high bar for releases. We need to maintain uh for releases. We need to maintain uh for releases. We need to maintain uh high quality of our documentation, of high quality of our documentation, of high quality of our documentation, of our examples, of our tests, of our our examples, of our tests, of our our examples, of our tests, of our benchmarks. If it if anything is out of benchmarks. If it if anything is out of benchmarks. If it if anything is out of place, people figure it out pretty place, people figure it out pretty place, people figure it out pretty quickly. quickly. quickly. So, we really do like coding agents as a So, we really do like coding agents as a So, we really do like coding agents as a a form of an excellent assistant for a form of an excellent assistant for a form of an excellent assistant for very hard technical problems. Coding very hard technical problems. Coding very hard technical problems. Coding agents bring a level of patience and agents bring a level of patience and agents bring a level of patience and massive knowledge that is very hard to massive knowledge that is very hard to massive knowledge that is very hard to muster as an individual working on a muster as an individual working on a muster as an individual working on a very large software project.
-
very large software project. very large software project. Many problems in Dioxis are knowledge Many problems in Dioxis are knowledge Many problems in Dioxis are knowledge problems. Our team can't feasibly know problems. Our team can't feasibly know problems. Our team can't feasibly know every detail about every build system, every detail about every build system, every detail about every build system, every runtime, every operating system, every runtime, every operating system, every runtime, every operating system, every programming language, every API, every programming language, every API, every programming language, every API, every quirk. Fortunately, this is every quirk. Fortunately, this is every quirk. Fortunately, this is exactly where the coding agents excel. exactly where the coding agents excel. exactly where the coding agents excel. They can quickly quickly sift through They can quickly quickly sift through They can quickly quickly sift through thousands of pages of documentation, thousands of pages of documentation, thousands of pages of documentation, read all the bespoke APIs, dig into read all the bespoke APIs, dig into read all the bespoke APIs, dig into binaries, reverse engineer APIs. They binaries, reverse engineer APIs. They binaries, reverse engineer APIs. They have so much more patience than an have so much more patience than an have so much more patience than an individual developer does. individual developer does. individual developer does. We were able to implement things like We were able to implement things like We were able to implement things like cotlin and swift plugins for dioxysis cotlin and swift plugins for dioxysis cotlin and swift plugins for dioxysis deeply integrated into our build system deeply integrated into our build system deeply integrated into our build system which is a really hard feature. If you which is a really hard feature. If you which is a really hard feature. If you know react native turbo modules these know react native turbo modules these know react native turbo modules these things took many years of development to things took many years of development to things took many years of development to get right by people writing them by get right by people writing them by get right by people writing them by hand. We were able to ship this in like hand. We were able to ship this in like hand. We were able to ship this in like two to three weeks with coding agents two to three weeks with coding agents two to three weeks with coding agents and we probably could have gone faster. and we probably could have gone faster. and we probably could have gone faster. I think implementation was done in like I think implementation was done in like I think implementation was done in like the first day and we spent two weeks the first day and we spent two weeks the first day and we spent two weeks building test cases and testing on real building test cases and testing on real building test cases and testing on real devices.
-
devices. devices. And in Blitz, the thing on the right, And in Blitz, the thing on the right, And in Blitz, the thing on the right, our custom web engine, web agents have our custom web engine, web agents have our custom web engine, web agents have accelerated debugging hard CSS, styling, accelerated debugging hard CSS, styling, accelerated debugging hard CSS, styling, and layout issues for us. The agents and layout issues for us. The agents and layout issues for us. The agents know the CSS spec exceptionally well. know the CSS spec exceptionally well. know the CSS spec exceptionally well. You might be writing a line of code You might be writing a line of code You might be writing a line of code that's trying to resolve some sort of that's trying to resolve some sort of that's trying to resolve some sort of painting or layout issue. And the agents painting or layout issue. And the agents painting or layout issue. And the agents can instantly recall exactly how Google can instantly recall exactly how Google can instantly recall exactly how Google Chrome and Safari do it. Can tell you Chrome and Safari do it. Can tell you Chrome and Safari do it. Can tell you the right way of handling it for your the right way of handling it for your the right way of handling it for your problem. and you don't have to go open problem. and you don't have to go open problem. and you don't have to go open the the WebKit source code that's nested the the WebKit source code that's nested the the WebKit source code that's nested deep somewhere in Apple's Git deep somewhere in Apple's Git deep somewhere in Apple's Git repositories. repositories. repositories. We're able to invest time in doing We're able to invest time in doing We're able to invest time in doing things the right way, not the hacky way, things the right way, not the hacky way, things the right way, not the hacky way, which interestingly is a turn and which interestingly is a turn and which interestingly is a turn and compared to how we used to do it. We compared to how we used to do it. We compared to how we used to do it. We would always gauge a project based on would always gauge a project based on would always gauge a project based on its complexity and tend to take its complexity and tend to take its complexity and tend to take shortcuts as humans to ship things shortcuts as humans to ship things shortcuts as humans to ship things faster but not at a high quality bar. So faster but not at a high quality bar. So faster but not at a high quality bar. So coding agents give us the ability to coding agents give us the ability to coding agents give us the ability to maintain quality and do things the right maintain quality and do things the right maintain quality and do things the right way which is very interesting. way which is very interesting. way which is very interesting. Um a less sexy application of coding Um a less sexy application of coding Um a less sexy application of coding agents for ambitious projects is agents for ambitious projects is agents for ambitious projects is actually doing the extremely mundane actually doing the extremely mundane actually doing the extremely mundane tasks. Uh our team is very small. We tasks. Uh our team is very small. We tasks. Uh our team is very small. We have three core engineers working on have three core engineers working on have three core engineers working on Diosis. uh any time that we spend like Diosis. uh any time that we spend like Diosis. uh any time that we spend like verifying the tarball extracts into the verifying the tarball extracts into the verifying the tarball extracts into the right directory structure is like time right directory structure is like time right directory structure is like time wasted from us thinking about the wasted from us thinking about the wasted from us thinking about the architecture and the the hard problems architecture and the the hard problems architecture and the the hard problems of our software. Um Dioxis is a large of our software. Um Dioxis is a large of our software. Um Dioxis is a large project and it's been a challenge to project and it's been a challenge to project and it's been a challenge to maintain a high quality bar across the maintain a high quality bar across the maintain a high quality bar across the entire codebase across every release. In
-
entire codebase across every release. In entire codebase across every release. In one release we might add an extension one release we might add an extension one release we might add an extension for a new editor like zed. We might not for a new editor like zed. We might not for a new editor like zed. We might not be able to test that editor every time be able to test that editor every time be able to test that editor every time we do a patch release. And it might be we do a patch release. And it might be we do a patch release. And it might be easy to break that. Applying agents to easy to break that. Applying agents to easy to break that. Applying agents to the problem actually lets us automate the problem actually lets us automate the problem actually lets us automate many of these like hard tedious tasks many of these like hard tedious tasks many of these like hard tedious tasks that would have taken like countless that would have taken like countless that would have taken like countless hours before. hours before. hours before. And then for us like the code is the And then for us like the code is the And then for us like the code is the product. People download the code, they product. People download the code, they product. People download the code, they build on the code, users interact with build on the code, users interact with build on the code, users interact with our APIs, they read our docs, and they our APIs, they read our docs, and they our APIs, they read our docs, and they build on our architecture. So any build on our architecture. So any build on our architecture. So any laziness in the the quality of the code, laziness in the the quality of the code, laziness in the the quality of the code, the SDKs that we ship to users the SDKs that we ship to users the SDKs that we ship to users translates directly into a worse translates directly into a worse translates directly into a worse developer experience and people either developer experience and people either developer experience and people either getting upset, their businesses being getting upset, their businesses being getting upset, their businesses being stalled, or them turning off the stalled, or them turning off the stalled, or them turning off the product. So coding agents have been product. So coding agents have been product. So coding agents have been excellent at maintaining uh tasks like excellent at maintaining uh tasks like excellent at maintaining uh tasks like verifying release checklists, verifying release checklists, verifying release checklists, backporting bug fixes onto stable backporting bug fixes onto stable backporting bug fixes onto stable releases, and ensuring our docs and releases, and ensuring our docs and releases, and ensuring our docs and documents are of extremely high quality. documents are of extremely high quality. documents are of extremely high quality. We still do write a lot of docu comments We still do write a lot of docu comments We still do write a lot of docu comments ourselves, but it's very easy to give ourselves, but it's very easy to give ourselves, but it's very easy to give the agent a task of making sure the agent a task of making sure the agent a task of making sure everything is documented properly.
-
everything is documented properly. everything is documented properly. Everything has an example and everything Everything has an example and everything Everything has an example and everything actually is documenting the thing that actually is documenting the thing that actually is documenting the thing that it says in the way that it says. Um, as it says in the way that it says. Um, as it says in the way that it says. Um, as humans, you know, you'll go edit the humans, you know, you'll go edit the humans, you know, you'll go edit the code, but you won't edit the comment. code, but you won't edit the comment. code, but you won't edit the comment. So, a lot of your comments will actually So, a lot of your comments will actually So, a lot of your comments will actually be out of date over time and things get be out of date over time and things get be out of date over time and things get very confusing. Um, and if you just look very confusing. Um, and if you just look very confusing. Um, and if you just look at the numbers, we've shipped more patch at the numbers, we've shipped more patch at the numbers, we've shipped more patch releases in our most recent DAXis releases in our most recent DAXis releases in our most recent DAXis version than we ever had before. So, version than we ever had before. So, version than we ever had before. So, we've been able to maintain weekly or we've been able to maintain weekly or we've been able to maintain weekly or multiple times a week release cadence multiple times a week release cadence multiple times a week release cadence for a large ambitious piece of software for a large ambitious piece of software for a large ambitious piece of software in a way that we would be scared to do a in a way that we would be scared to do a in a way that we would be scared to do a release earlier. release earlier. release earlier. Um, one thing I'm not 100% convinced Um, one thing I'm not 100% convinced Um, one thing I'm not 100% convinced yet, uh, we have found varying levels of yet, uh, we have found varying levels of yet, uh, we have found varying levels of success is using AI to write tests or at success is using AI to write tests or at success is using AI to write tests or at least blindly writing tests. Um, one least blindly writing tests. Um, one least blindly writing tests. Um, one place we've struggled with Diosis is place we've struggled with Diosis is place we've struggled with Diosis is testing. It can be very hard to test testing. It can be very hard to test testing. It can be very hard to test foundational software, especially like foundational software, especially like foundational software, especially like end to end for complex systems. It's end to end for complex systems. It's end to end for complex systems. It's hard to test that your extension hard to test that your extension hard to test that your extension installs into zed and works the way you installs into zed and works the way you installs into zed and works the way you want it to do with literally opening zed want it to do with literally opening zed want it to do with literally opening zed and like using the extension. Um, the and like using the extension. Um, the and like using the extension. Um, the coding agents struggle here too to an coding agents struggle here too to an coding agents struggle here too to an extent. Uh, they also are, you know, extent. Uh, they also are, you know, extent. Uh, they also are, you know, have a tendency to write kind of sloppy have a tendency to write kind of sloppy have a tendency to write kind of sloppy tests. you'll give it a constructor and tests. you'll give it a constructor and tests. you'll give it a constructor and then it will go test the constructor and then it will go test the constructor and then it will go test the constructor and that's not a very interesting test. Um that's not a very interesting test. Um that's not a very interesting test. Um they can easily write tests for any they can easily write tests for any they can easily write tests for any given API but much like humans they fail given API but much like humans they fail given API but much like humans they fail to write the right tests. So we still to write the right tests. So we still to write the right tests. So we still find ourselves enumerating test find ourselves enumerating test find ourselves enumerating test conditions manually um crafting test conditions manually um crafting test conditions manually um crafting test APIs our ourselves and handling test
-
APIs our ourselves and handling test APIs our ourselves and handling test runners um but it is sometimes a great runners um but it is sometimes a great runners um but it is sometimes a great sounding board to come up with the test sounding board to come up with the test sounding board to come up with the test ideas for a particular thing you're ideas for a particular thing you're ideas for a particular thing you're trying to to make sure has coverage and trying to to make sure has coverage and trying to to make sure has coverage and then enumerating the the edge conditions then enumerating the the edge conditions then enumerating the the edge conditions um but one place that we have actually um but one place that we have actually um but one place that we have actually really enjoyed using coding agents to do really enjoyed using coding agents to do really enjoyed using coding agents to do testing is building test harnesses. So testing is building test harnesses. So testing is building test harnesses. So fuzzing is a critical part of building fuzzing is a critical part of building fuzzing is a critical part of building like production grade software which like production grade software which like production grade software which means taking your application and means taking your application and means taking your application and putting it under millions of different putting it under millions of different putting it under millions of different inputs and quite often adversarial inputs and quite often adversarial inputs and quite often adversarial inputs basically like malformed inputs inputs basically like malformed inputs inputs basically like malformed inputs or uh ways of using the software that or uh ways of using the software that or uh ways of using the software that users should not be using the software users should not be using the software users should not be using the software but they they can use the software and but they they can use the software and but they they can use the software and coding agents are excellent at building coding agents are excellent at building coding agents are excellent at building these harnesses. these harnesses. these harnesses. Um, one thing we've found that code Um, one thing we've found that code Um, one thing we've found that code extra code architecture is still an art. extra code architecture is still an art. extra code architecture is still an art. Um, Um, Um, coding agents enable you to ship at an coding agents enable you to ship at an coding agents enable you to ship at an exceptionally high velocity. I mentioned exceptionally high velocity. I mentioned exceptionally high velocity. I mentioned this earlier. If the substrate on which this earlier. If the substrate on which this earlier. If the substrate on which your coding agents code lands is bad, your coding agents code lands is bad, your coding agents code lands is bad, their contributions will be bad as well.
-
their contributions will be bad as well. their contributions will be bad as well. Unlike a human engineer, coding agents Unlike a human engineer, coding agents Unlike a human engineer, coding agents aren't typically afraid to voluntarily aren't typically afraid to voluntarily aren't typically afraid to voluntarily go on a huge refactor of a system or go on a huge refactor of a system or go on a huge refactor of a system or redesign the architecture when a feature redesign the architecture when a feature redesign the architecture when a feature doesn't quite fit. They'll typically doesn't quite fit. They'll typically doesn't quite fit. They'll typically just ship. Most of our development time just ship. Most of our development time just ship. Most of our development time is actually now spent thinking about is actually now spent thinking about is actually now spent thinking about software architecture about what software architecture about what software architecture about what features we'll want in the future and features we'll want in the future and features we'll want in the future and how the system will evolve. Just like how the system will evolve. Just like how the system will evolve. Just like human engineers can write spaghetti human engineers can write spaghetti human engineers can write spaghetti code, so can the agents, but now just code, so can the agents, but now just code, so can the agents, but now just faster. However, I will say with fable faster. However, I will say with fable faster. However, I will say with fable level tools, the actual code quality level tools, the actual code quality level tools, the actual code quality itself is so high, provided you properly itself is so high, provided you properly itself is so high, provided you properly communicate your intent, that proper communicate your intent, that proper communicate your intent, that proper software architecture will probably take software architecture will probably take software architecture will probably take the vast majority of time in the future. the vast majority of time in the future. the vast majority of time in the future. Actual code writing, not so much. Actual code writing, not so much. Actual code writing, not so much. Um, one thing we do for Daxis, which Um, one thing we do for Daxis, which Um, one thing we do for Daxis, which maybe you guys still do, maybe you maybe you guys still do, maybe you maybe you guys still do, maybe you don't, uh, is we review every PR line by don't, uh, is we review every PR line by don't, uh, is we review every PR line by line. Um, we definitely use AI review to line. Um, we definitely use AI review to line. Um, we definitely use AI review to spot bugs ahead of time, but we still do spot bugs ahead of time, but we still do spot bugs ahead of time, but we still do like to read the code that we ship. We like to read the code that we ship. We like to read the code that we ship. We receive lots and lots of PRs from receive lots and lots of PRs from receive lots and lots of PRs from strangers. Actually, uh, Daxis is big strangers. Actually, uh, Daxis is big strangers. Actually, uh, Daxis is big open source project. Uh, and not every open source project. Uh, and not every open source project. Uh, and not every PR is made the same. Uh we find that PR is made the same. Uh we find that PR is made the same. Uh we find that users can be quite bad at communicating users can be quite bad at communicating users can be quite bad at communicating their intent to the models. Contributors their intent to the models. Contributors their intent to the models. Contributors don't usually think deeply about how the don't usually think deeply about how the don't usually think deeply about how the codebase should evolve over time. They codebase should evolve over time. They codebase should evolve over time. They just want their bug fix or their feature just want their bug fix or their feature just want their bug fix or their feature in. Uh and many solutions are glued in in. Uh and many solutions are glued in in. Uh and many solutions are glued in place. So we're we're not quite at the place. So we're we're not quite at the place. So we're we're not quite at the point where the coding agents can read point where the coding agents can read point where the coding agents can read our minds. Uh and thus we're still our minds. Uh and thus we're still our minds. Uh and thus we're still limited by the medium of text. And as limited by the medium of text. And as limited by the medium of text. And as ridiculous as it sounds, prompt ridiculous as it sounds, prompt ridiculous as it sounds, prompt engineering is quite real. The quality engineering is quite real. The quality engineering is quite real. The quality of an implementation can be very much
-
of an implementation can be very much of an implementation can be very much dependent on the the prompt that you dependent on the the prompt that you dependent on the the prompt that you give the model. give the model. give the model. But in a sense, nothing really has But in a sense, nothing really has But in a sense, nothing really has changed. Reading code has always been changed. Reading code has always been changed. Reading code has always been more important than writing code. Um more important than writing code. Um more important than writing code. Um maybe not in the beginning, but maybe not in the beginning, but maybe not in the beginning, but eventually as the project evolves, uh it eventually as the project evolves, uh it eventually as the project evolves, uh it does. does. does. So my closing thoughts on on using So my closing thoughts on on using So my closing thoughts on on using coding agents to build ambitious coding agents to build ambitious coding agents to build ambitious software is that code is now cheap, but software is that code is now cheap, but software is that code is now cheap, but quality is not. Um the the job of a quality is not. Um the the job of a quality is not. Um the the job of a software engineer has never really been software engineer has never really been software engineer has never really been about putting lines of code on the about putting lines of code on the about putting lines of code on the screen. It's it's been about screen. It's it's been about screen. It's it's been about architecting elegant solutions to architecting elegant solutions to architecting elegant solutions to complex problems to thinking 10 steps complex problems to thinking 10 steps complex problems to thinking 10 steps ahead about how a system will evolve ahead about how a system will evolve ahead about how a system will evolve about retaining flexibility in the face about retaining flexibility in the face about retaining flexibility in the face of changing requirements. These facts of changing requirements. These facts of changing requirements. These facts have not changed and the bar for have not changed and the bar for have not changed and the bar for software engineering is higher than software engineering is higher than software engineering is higher than ever. ever. ever. Uh if you would like to work on the Uh if you would like to work on the Uh if you would like to work on the tools of the next generation of tools of the next generation of tools of the next generation of software, Cognition, the people who have software, Cognition, the people who have software, Cognition, the people who have acquired Dioxis are hiring. Uh the Daxis acquired Dioxis are hiring. Uh the Daxis acquired Dioxis are hiring. Uh the Daxis team joined Cognition to be part of the team joined Cognition to be part of the team joined Cognition to be part of the future and hopefully you will too. Thank future and hopefully you will too. Thank future and hopefully you will too. Thank you.
-
you. you. [applause]
No summary available yet.
View original episode ↗