Building ambitious software — Jonathan Kelley, Dioxus Labs & Cognition

Read the talk

Building Ambitious Software in the Age of AI

Jonathan Kelley’s Dioxus team learned that coding agents can absorb Rust’s mechanical difficulty and accelerate specialized integrations, debugging, and release work. The harder problems—choosing architecture, designing meaningful tests, communicating intent, and deciding what deserves to ship—remain stubbornly human.

From a talk by Jonathan Kelley

At a glance

Ideas worth remembering

  • A large volume of plausible code is not progress if maintainers cannot justify merging it; unchecked agent output can become a “slop cannon.”

  • Rust’s difficulty can become an advantage when agents absorb borrow-checker work and edge cases while developers retain its structural constraints.

  • Agents pay off as patient specialists on knowledge-heavy integrations and specification-driven debugging, especially when architecture and desired behavior are already clear.

  • Release checks, backports, documentation audits, and fuzzing harnesses are strong automation targets; selecting meaningful end-to-end tests still requires human judgment.

  • Code is cheap, but quality is not. Architecture, explicit intent, verification, and careful review become more important as implementation accelerates.

Dioxus started as a bet on one cross-platform stack

In 2021, Jonathan Kelley spent his final undergraduate summer starting Dioxus, a cross-platform application framework written in Rust. The proposition was appealingly direct: build web, desktop, and mobile interfaces with Rust, HTML, and CSS instead of moving among platform-specific languages, IDEs, and build systems. Rust would produce native applications without a virtual machine, JavaScript runtime, or inter-process bridge, while familiar web markup and React-inspired reactivity would preserve access to web concepts and tooling. 0:22

Recording frame at 104 seconds
Recording frame at 104 seconds

The easy-sounding abstraction concealed an enormous implementation burden. In the ecosystem available at the time, Dioxus could not simply assemble ready-made pieces for reactivity, font rendering, hot reloading, and bundling. The team had to build much of the application stack itself. “Building a web browser” became one of the necessary intermediate steps rather than an adjacent research project. 1:53

Five years later, Dioxus supported the major capabilities in that original plan: shared full-stack and native code, cross-platform rendering, hot reload, and bundle splitting. Kelley reported nearly 37,000 GitHub stars, millions of downloads, and an estimated cumulative audience above 200 million across applications including AI assistants, voting software, data-science tools, and satellite collision-avoidance systems. The end-user figure is an estimate presented in the recording, not a measured deployment census. 2:29

The developer experience was deliberately compressed around a conventional Rust project: fewer files, unified tooling, optimized assets, little platform-specific code, and a main.rs entry point. That simplicity mattered because the product was not only its visible output. Developers had to understand the project structure, compile it across platforms, and build businesses against its APIs.

Two projects show how far the team pushed the stack. Blitz is a lightweight HTML and CSS renderer built from a browser-grade CSS engine extracted from Firefox, a custom HTML/DOM implementation, and a hybrid GPU pipeline. Kelley reported Blitz applications below five megabytes and below 50 megabytes of runtime memory. Subsecond watches Rust, C, or C++ source files, recompiles only the changed portions, and patches the running native application in place in roughly 100 milliseconds; the same approach extends to Rust compiled to WebAssembly. 3:59

Those systems established the quality culture that shaped the later agent experiment. A small team had spent years reading every contribution, maintaining an ambitious release cadence, and writing essentially all of Dioxus by hand. Generated code would be judged against that existing standard, not merely against whether it compiled or demonstrated a feature.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:12 · section reference included

Fast Rust generation produced a backlog, not a release

The team had been skeptical that agentic coding and high-quality systems work belonged together. That changed when coding agents became markedly better at Rust. The team responded by exhausting its coding-agent subscriptions and generating tens of thousands of lines for long-desired features, integrations, and bug fixes. Almost none of that output cleared the question that mattered: should this be merged? 5:37

Recording frame at 350 seconds
Recording frame at 350 seconds

The code remained in drafts because implementation volume had outrun reviewable quality. Kelley calls this failure mode becoming a “slop cannon”: an agent can rapidly produce plausible changes, but every unmerged change still consumes attention, creates uncertainty, and competes with real maintenance work. The observable result was not a faster product. It was a much larger queue of code that the maintainers did not trust.

The postmortem produced a surprising reversal. Dioxus had spent years making Rust easier for people through readable code, good tools, and helpful errors. Agents were less sensitive to that ergonomic work. Instead, they handled Rust’s mechanical burden directly: following edge cases, satisfying the type system, and repeatedly negotiating with the borrow checker. The learning curve the team had tried to flatten for humans became useful because an agent could absorb it while preserving Rust’s compile-time constraints. 7:00

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:37 · section reference included

Ambitious software needs a different quality bar

The lessons apply most strongly to foundational software, where users build on the code itself. Research prototypes can prioritize discovery, and an application may hide its internals behind a polished interface. Dioxus has to keep working, remain fixable when it fails, preserve APIs across patch releases, and maintain accurate examples, documentation, tests, and benchmarks. A shortcut in the framework becomes somebody else’s broken build or stalled business. 8:00

Recording frame at 592 seconds
Recording frame at 592 seconds

Velocity therefore compounds through the existing architecture. New work lands on a “substrate” made of module boundaries, APIs, tests, and maintenance conventions. A sound substrate makes later features easier to add and repair. A poor one turns every additional feature into another dependency on an unstable base. Dioxus still has dozens of desired features, but shipping them faster cannot justify breaking APIs relied on by millions of users.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:00 · section reference included

Agents work well as patient specialists

The first strong use case was not indiscriminate feature generation. It was knowledge-heavy engineering. A three-person core team cannot retain every detail of every operating system, build system, runtime, language, API, binary format, and implementation quirk. Coding agents can patiently search documentation, inspect bespoke interfaces, examine binaries, and compare unfamiliar implementations without becoming tired of the investigation. 9:56

Recording frame at 686 seconds
Recording frame at 686 seconds

A concrete example was adding deeply integrated Kotlin and Swift plugins to Dioxus’s build system. Comparable native-module infrastructure had taken years of handwritten development elsewhere. With agents, Dioxus shipped its version in roughly two to three weeks. Kelley recalls that the initial implementation may have arrived in about a day; the remaining time—roughly two weeks—went into designing test cases and exercising the integration on real devices. Generation accelerated the first draft, but verification still dominated the path to a shippable feature. 10:56

Blitz supplied another good fit. CSS painting and layout bugs often require reading specifications and checking how established browser engines handle obscure cases. An agent can retrieve the relevant rule and compare Chrome, Safari, or WebKit behavior while the engineer stays focused on the local rendering problem. That reduces the pressure to insert a quick workaround simply because investigating the correct behavior would otherwise take too long.

These examples share a useful boundary: the system already has an architectural destination, while the agent supplies patient research and implementation labor. The agent makes doing the careful version cheaper. It does not decide whether the integration belongs in the product or how the surrounding system should evolve.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:56 · section reference included

Release chores scale better than test judgment

The less glamorous use case may be more valuable: agents can repeatedly perform work that a small team cannot afford to do by hand. Checking that a release tarball extracts into the correct directory or confirming that examples and documentation still match the code consumes time that could otherwise go into architectural work. Editor extensions illustrate the harder edge of this problem: a team may struggle to retest an extension after every patch, but verifying that it installs in Zed and works during actual use is difficult for agents too. Automating release chores does not by itself solve that end-to-end check. 12:15

Recording frame at 815 seconds
Recording frame at 815 seconds

Three recurring mechanisms paid off:

  • Release verification: Agents can walk release checklists and inspect packaging details consistently.
  • Maintenance across branches: They can backport bug fixes onto stable releases, reducing the manual cost of supporting shipped versions.
  • Documentation audits: They can find missing examples and stale comments, including comments that still describe behavior changed by a human code edit.

Kelley links this automation to a concrete operational change: the latest Dioxus version had received more patch releases than any previous one, with releases arriving weekly or multiple times per week. The talk does not isolate which automation contributed how much, but the team became willing to release at a cadence it previously considered too risky.

Testing exposed the boundary of this success. An agent can write a test for nearly any API, but that does not mean it has chosen a consequential behavior. Given a constructor, it may simply test that constructor. Foundational end-to-end behavior requires product knowledge, an appropriate test interface, and a runner capable of reproducing the environment. Humans still enumerate the important conditions and build much of that testing structure. 14:21

Agents remain useful as a sounding board for candidate conditions and edge cases, and they excel at constructing fuzzing harnesses. A fuzzing harness repeatedly drives software with millions of ordinary, malformed, or adversarial inputs to expose crashes and assumptions that hand-written examples miss. Here the target behavior is already clear—feed varied inputs into a defined interface and report failures—so the agent can handle the repetitive harness construction without being asked to decide what product behavior matters most.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:15 · section reference included

Architecture and review remain the bottleneck

Once implementation becomes cheap, architecture consumes more of the schedule. Agent contributions inherit the quality of the system they enter: a poor foundation still produces poor contributions, even when code arrives at exceptional speed. When a feature does not fit, an agent may readily undertake a huge refactor or redesign the architecture rather than hesitate over the scope of the change. Humans and agents can both write spaghetti code; agents can now write it faster. Dioxus consequently spends much of its development time deciding which future features the architecture must accommodate and how today’s interfaces should leave room for them. Kelley expects architecture to take an even larger share of engineering time as implementation improves, provided developers communicate their intent clearly. 16:03

Recording frame at 1002 seconds
Recording frame at 1002 seconds

What separates generated code from shipped software? The diagram synthesizes the practices described here: architectural intent shapes implementation, tests and real-device checks examine behavior, and maintainers read the code they ship. Its arrows show relationships rather than a fixed release order. In the Kotlin and Swift integration, an initial implementation arrived in about a day, while test cases and real-device testing took roughly two weeks. That contrast makes the remaining work visible: producing code quickly still leaves substantial work to decide whether it belongs in the product.

How it fits togetherWhat turns generated code into shipped software?

Define how the feature fits today and how the system may evolve.

An explanatory synthesis of the talk’s practices, not a prescribed sequence. Architecture shapes implementation; testing examines behavior; maintainers review code and decide what clears the quality bar.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

16:03 · section reference included

Reading code is still the job

Dioxus still reviews every pull request line by line, using AI review as another bug-finding input rather than a replacement for maintainers reading what they ship. Open-source contributions make this especially important: contributors often want one bug fixed or one feature accepted, while maintainers have to consider the codebase’s long-term shape. A locally successful patch can still be glued into the wrong abstraction.

Intent must also travel through text. Agents cannot infer the maintainers’ unwritten model of how Dioxus should evolve, and contributors may not communicate that model clearly. Prompt quality therefore affects implementation quality in a practical sense: a better description carries more architectural decisions, constraints, and acceptance criteria into the agent’s work. It is not mind reading, and it does not remove the need to inspect the result.

The technical conclusion is deliberately old-fashioned: reading code eventually matters more than writing it. Coding agents make lines of code cheap, but they do not make quality cheap. Engineering value remains in choosing an elegant shape for a complex system, anticipating how it will change, preserving flexibility, and taking responsibility for what ships. Faster implementation raises that bar because weak decisions can now propagate much faster. 18:03

Kelley closes by connecting that work to Cognition: Cognition acquired Dioxus, and the Dioxus team joined the company. He also notes that Cognition is hiring people to work on the next generation of software-development tools. 18:41

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:03 · section reference included

Resources

From the talk

  • The Rust full-stack application framework discussed throughout the talk. Its README shows the cross-platform project structure, hot-reloading workflow, native integrations, examples, and contribution paths.

Read the complete timestamped transcript
  1. 0:01

    [music]

  2. 0:12

    Hello, my name is Jonathan Kelly and

  3. 0:15

    today we're going to talk about what it

  4. 0:17

    means to build ambitious software in the

  5. 0:19

    age of AI.

  6. 0:22

    5 years ago, I made the first commit

  7. 0:24

    ever to a project called Diosis. I used

  8. 0:28

    the last summer I had as an

  9. 0:29

    undergraduate and instead of getting an

  10. 0:31

    internship at Google or doing research

  11. 0:33

    in AI like many of my friends at the

  12. 0:35

    time, I spent it exploring an idea I had

  13. 0:38

    for a crossplatform app framework

  14. 0:40

    written in the Rust programming

  15. 0:42

    language.

  16. 0:44

    In 2021, Rust was still pretty niche,

  17. 0:47

    but the ecosystem was growing, the

  18. 0:49

    tooling was improving, and the pitch of

  19. 0:51

    native performance, a solid type system,

  20. 0:54

    and simple cross compilation really sold

  21. 0:56

    me. It's extremely nerdy.

  22. 1:00

    The idea for Diosis was straightforward.

  23. 1:03

    What if we had an crossplatform app

  24. 1:05

    framework? Instead of waiting through

  25. 1:08

    dozens of tool chains, programming

  26. 1:09

    languages, and idees, what if we simply

  27. 1:12

    wrote our all of our apps in Rust using

  28. 1:16

    HTML and CSS as the markup language?

  29. 1:19

    This was back in the day 2021 where

  30. 1:21

    React Native was janky, Flutter was too

  31. 1:24

    slow, and neither performed well with

  32. 1:26

    native APIs. On the flip, with Rust, we

  33. 1:30

    could build native abstractly with no

  34. 1:32

    VM, no IPC, no JavaScript. And if we

  35. 1:36

    used a little bit of HTML and CSS for

  36. 1:39

    the UI and take some inspiration from

  37. 1:41

    React for the reactivity, we could reuse

  38. 1:44

    vast amounts of web components and web

  39. 1:46

    tooling. The goal was an extremely

  40. 1:48

    powerful app framework that was still

  41. 1:50

    quite familiar to the average developer.

  42. 1:53

    Sounds easy, right? Well, as they say,

  43. 1:57

    we choose to build an app framework from

  44. 1:58

    scratch, not because it's easy, but

  45. 2:00

    because we thought it would be easy.

  46. 2:03

    In reality, trying to challenge React

  47. 2:04

    Native and Flutter is extremely

  48. 2:06

    ambitious. In 2021, there were very few

  49. 2:09

    off-the-shelf components you could use

  50. 2:11

    to build Dioxis. Everything from

  51. 2:13

    reactivity to font rendering to hot

  52. 2:16

    reloading and application bundling had

  53. 2:18

    to be built from scratch. There's

  54. 2:20

    nothing we could use. For us, tasks like

  55. 2:23

    building a web browser were just

  56. 2:25

    necessary steps along the way.

  57. 2:29

    Now today in 2026, Diosis has achieved

  58. 2:33

    and far surpassed its original mission.

  59. 2:36

    We support all the features we

  60. 2:37

    originally set out to build from

  61. 2:39

    crossplatform support to native

  62. 2:41

    rendering to Rust hot reload and bundle

  63. 2:44

    splitting. We've basically reinvented

  64. 2:47

    and improved the entire app development

  65. 2:49

    stack.

  66. 2:50

    Users can ship a powerful full stack web

  67. 2:53

    application in the exact same codebase

  68. 2:56

    sharing components as their iOS and

  69. 2:58

    Android apps.

  70. 3:00

    The Daxis project now has nearly 37,000

  71. 3:04

    stars on GitHub with millions of

  72. 3:05

    downloads. Apps built in Dioxis are

  73. 3:08

    rolled across the globe with a

  74. 3:11

    cumulative estimate of over 200 million

  75. 3:12

    end users. Users have built things like

  76. 3:15

    AI assistance, software for voting, data

  77. 3:19

    science tools, and even collision

  78. 3:21

    avoidance system for satellites in

  79. 3:23

    space.

  80. 3:25

    We've put a ton of effort into making

  81. 3:27

    Dioxis as userfriendly as possible.

  82. 3:30

    Fewer files, build tooling, hot

  83. 3:32

    reloading, asset optimization,

  84. 3:35

    everything you need to easily ship

  85. 3:36

    across all platforms.

  86. 3:38

    Because Dioxis apps are written in Rust,

  87. 3:40

    they are structurally very simple. You

  88. 3:43

    rarely need to drop into platform

  89. 3:45

    specific code because all rest projects

  90. 3:48

    are alike. It's very easy for developers

  91. 3:50

    to dive into a new project. You can

  92. 3:52

    completely skip annoying build system

  93. 3:53

    setup. All you need is a main.rs to get

  94. 3:57

    started.

  95. 3:59

    One of the most ambitious goals we had

  96. 4:01

    for ship lightweight but fully featured

  97. 4:05

    HTML and CSS rendering engine called

  98. 4:07

    Blitz. We extracted the browser grade

  99. 4:09

    CSS engine out of Firefox, built our own

  100. 4:12

    HTML DOM, and developed a hybrid GPU

  101. 4:15

    rendering pipeline.

  102. 4:17

    Compared to Electron apps, which are RAM

  103. 4:19

    and storage hogs, Blitz apps are

  104. 4:21

    lightweight, coming in at less than 5

  105. 4:23

    megabytes bundle sizes and consume less

  106. 4:25

    than 50 megabytes of RAM at runtime. And

  107. 4:28

    they're pretty cool. You can write your

  108. 4:29

    own custom components, spinning cubes,

  109. 4:31

    you can customize the browser however

  110. 4:32

    you want. It's a very cool project.

  111. 4:35

    We also worked on a tool called

  112. 4:36

    Subsecond uh which is our generic hot

  113. 4:39

    reload engine for Rust, C and C++.

  114. 4:42

    Subsecond watches your code for edits,

  115. 4:44

    recompiles parts of the code that

  116. 4:46

    changed and patches the running app in

  117. 4:48

    place all in 100 100 milliseconds. This

  118. 4:51

    was an incredibly difficult technical

  119. 4:53

    challenge and is the only hot reload

  120. 4:55

    engine for native compiled code to have

  121. 4:58

    such wide language and runtime support.

  122. 5:00

    It works on every major system and even

  123. 5:02

    the web is compiled into web assembly.

  124. 5:05

    No one has done this before

  125. 5:09

    because these projects we've worked on

  126. 5:11

    along the way over the past 5 years are

  127. 5:13

    incredibly ambitious and are the result

  128. 5:15

    of a tiny but

  129. 5:20

    over every line of code by with our own

  130. 5:23

    two eyes and maintain a frequent but

  131. 5:25

    ambitious release cadence.

  132. 5:28

    The most amazing thing, every line of

  133. 5:30

    code in Dioxis until very recently has

  134. 5:33

    been painstakingly written by hand.

  135. 5:37

    Why do I say recently? Well, if you

  136. 5:40

    aren't aware, software engineering and

  137. 5:42

    development has taken a massive turn in

  138. 5:44

    the past 6 months. AI coding agents got

  139. 5:48

    really, really good. And specifically,

  140. 5:50

    they got really good at Rust. Our team,

  141. 5:53

    a bunch of cracked rest engineers, has

  142. 5:56

    been quite skeptical of AI for a long

  143. 5:58

    time. We had not felt the AGI, so to

  144. 6:01

    speak. And we definitely weren't using

  145. 6:03

    AI in our day-to-day work. We thought

  146. 6:05

    the two things were incompatible,

  147. 6:07

    shipping high quality code

  148. 6:10

    tools. Seeing them get really good at

  149. 6:12

    Rust was a huge surprise to us. So, we

  150. 6:15

    were finally excited.

  151. 6:18

    With this newfound excitement, we

  152. 6:20

    started building our team. maxed out our

  153. 6:22

    cloud code subscriptions, turned out

  154. 6:24

    tens of thousands of lines of Rust, and

  155. 6:26

    built all sorts of features we had long

  156. 6:27

    wished to have. Unfortunately, very

  157. 6:30

    little of the code cleared our quality

  158. 6:32

    bar of should we merge this in.

  159. 6:35

    Thousands of lines of new features, bug

  160. 6:37

    fixes, and integrations we had wanted

  161. 6:40

    for years sat there and draft and

  162. 6:42

    continue to sit there and draft. We

  163. 6:45

    definitely did not know how to properly

  164. 6:47

    wield these tools and it was way too

  165. 6:49

    easy to become what we call a slop

  166. 6:52

    cannon.

  167. 6:54

    Um, so we reflected a bit and studied

  168. 6:57

    what worked and what didn't.

  169. 7:07

    to read, easy to write, good tools, good

  170. 7:10

    error messages. The coding agents

  171. 7:12

    generally don't care about this. We

  172. 7:14

    tried to make Rust easel

  173. 7:20

    with Dioxis still

  174. 7:22

    because Rust is harder to write. The

  175. 7:24

    coding agents deal with the development

  176. 7:26

    burden for you. They handle the edge

  177. 7:28

    cases and they fight the borrow checker,

  178. 7:30

    saving you from the cognitive burden of

  179. 7:32

    writing Rust apps. The learning curve

  180. 7:35

    which we fought to reduce is now a

  181. 7:38

    feature.

  182. 7:40

    So throughout the process of adopting

  183. 7:43

    the coding tools to work on Dioxis, we

  184. 7:45

    learned a wide array of lessons.

  185. 7:48

    Many of the thing the coding agents do

  186. 7:50

    really well today and many things they

  187. 7:52

    just aren't there yet. So the next

  188. 7:55

    couple slides I want to talk about some

  189. 7:56

    of the things we learned and what it

  190. 7:58

    means to to build ambitious software

  191. 8:00

    projects in the age of agent coding.

  192. 8:05

    Um, it's important to talk about first

  193. 8:07

    what it means to build an ambitious

  194. 8:09

    software project. Um, there's many

  195. 8:12

    different types of software out there.

  196. 8:14

    Depends on what you ship every day. Um,

  197. 8:17

    you might be doing research and the

  198. 8:20

    quality of your code isn't the most

  199. 8:21

    important thing. You might be doing

  200. 8:22

    prototyping code and and iterating fast,

  201. 8:25

    moving quickly is important. You might

  202. 8:27

    be building applications which people

  203. 8:29

    don't see the code internally. They just

  204. 8:31

    see what it looks like on the outside.

  205. 8:34

    But for us and for Diosis,

  206. 8:37

    we care about a few different things.

  207. 8:40

    Primarily, of course, we care that our

  208. 8:42

    code works all the time and that if it

  209. 8:44

    breaks, we can easily fix it. I think

  210. 8:47

    this is something people don't think

  211. 8:48

    about enough these days that you need to

  212. 8:50

    continue to build easily maintainable

  213. 8:52

    code and like the velocity that you ship

  214. 8:56

    lays down on this substrate that you've

  215. 8:58

    built and if the substrate isn't good,

  216. 9:00

    nothing you build on top is going to be

  217. 9:02

    good.

  218. 9:03

    Secondarily, we care about shipping new

  219. 9:06

    features.

  220. 9:07

    Our road map is really long. It extends

  221. 9:10

    into the far future. There's dozens of

  222. 9:13

    features we still have yet to build for

  223. 9:15

    Dioxis. And we want to ship these

  224. 9:17

    quickly to keep up with the times, but

  225. 9:20

    we also want to maintain quality. When

  226. 9:23

    building a large ambitious project like

  227. 9:25

    Deiosis, there's a constant tension of

  228. 9:27

    shipping fast, adding new features, and

  229. 9:30

    then also making sure you don't break

  230. 9:31

    things and that in a patch release,

  231. 9:33

    you're not like breaking APIs that

  232. 9:36

    millions of people rely on. For a

  233. 9:38

    project that people build their

  234. 9:40

    businesses on, there's also a high bar

  235. 9:42

    for releases. We need to maintain uh

  236. 9:44

    high quality of our documentation, of

  237. 9:47

    our examples, of our tests, of our

  238. 9:49

    benchmarks. If it if anything is out of

  239. 9:51

    place, people figure it out pretty

  240. 9:53

    quickly.

  241. 9:56

    So, we really do like coding agents as a

  242. 10:01

    a form of an excellent assistant for

  243. 10:03

    very hard technical problems. Coding

  244. 10:05

    agents bring a level of patience and

  245. 10:07

    massive knowledge that is very hard to

  246. 10:10

    muster as an individual working on a

  247. 10:12

    very large software project.

  248. 10:14

    Many problems in Dioxis are knowledge

  249. 10:16

    problems. Our team can't feasibly know

  250. 10:19

    every detail about every build system,

  251. 10:21

    every runtime, every operating system,

  252. 10:24

    every programming language, every API,

  253. 10:26

    every quirk. Fortunately, this is

  254. 10:29

    exactly where the coding agents excel.

  255. 10:32

    They can quickly quickly sift through

  256. 10:34

    thousands of pages of documentation,

  257. 10:36

    read all the bespoke APIs, dig into

  258. 10:39

    binaries, reverse engineer APIs. They

  259. 10:42

    have so much more patience than an

  260. 10:44

    individual developer does.

  261. 10:46

    We were able to implement things like

  262. 10:48

    cotlin and swift plugins for dioxysis

  263. 10:51

    deeply integrated into our build system

  264. 10:54

    which is a really hard feature. If you

  265. 10:56

    know react native turbo modules these

  266. 10:58

    things took many years of development to

  267. 11:00

    get right by people writing them by

  268. 11:02

    hand. We were able to ship this in like

  269. 11:05

    two to three weeks with coding agents

  270. 11:07

    and we probably could have gone faster.

  271. 11:08

    I think implementation was done in like

  272. 11:10

    the first day and we spent two weeks

  273. 11:12

    building test cases and testing on real

  274. 11:13

    devices.

  275. 11:15

    And in Blitz, the thing on the right,

  276. 11:17

    our custom web engine, web agents have

  277. 11:20

    accelerated debugging hard CSS, styling,

  278. 11:23

    and layout issues for us. The agents

  279. 11:25

    know the CSS spec exceptionally well.

  280. 11:28

    You might be writing a line of code

  281. 11:29

    that's trying to resolve some sort of

  282. 11:31

    painting or layout issue. And the agents

  283. 11:33

    can instantly recall exactly how Google

  284. 11:35

    Chrome and Safari do it. Can tell you

  285. 11:37

    the right way of handling it for your

  286. 11:39

    problem. and you don't have to go open

  287. 11:41

    the the WebKit source code that's nested

  288. 11:44

    deep somewhere in Apple's Git

  289. 11:47

    repositories.

  290. 11:49

    We're able to invest time in doing

  291. 11:51

    things the right way, not the hacky way,

  292. 11:54

    which interestingly is a turn and

  293. 11:57

    compared to how we used to do it. We

  294. 11:59

    would always gauge a project based on

  295. 12:00

    its complexity and tend to take

  296. 12:02

    shortcuts as humans to ship things

  297. 12:05

    faster but not at a high quality bar. So

  298. 12:08

    coding agents give us the ability to

  299. 12:10

    maintain quality and do things the right

  300. 12:12

    way which is very interesting.

  301. 12:15

    Um a less sexy application of coding

  302. 12:18

    agents for ambitious projects is

  303. 12:20

    actually doing the extremely mundane

  304. 12:22

    tasks. Uh our team is very small. We

  305. 12:24

    have three core engineers working on

  306. 12:26

    Diosis. uh any time that we spend like

  307. 12:29

    verifying the tarball extracts into the

  308. 12:32

    right directory structure is like time

  309. 12:34

    wasted from us thinking about the

  310. 12:35

    architecture and the the hard problems

  311. 12:37

    of our software. Um Dioxis is a large

  312. 12:40

    project and it's been a challenge to

  313. 12:42

    maintain a high quality bar across the

  314. 12:44

    entire codebase across every release. In

  315. 12:46

    one release we might add an extension

  316. 12:48

    for a new editor like zed. We might not

  317. 12:51

    be able to test that editor every time

  318. 12:53

    we do a patch release. And it might be

  319. 12:54

    easy to break that. Applying agents to

  320. 12:57

    the problem actually lets us automate

  321. 12:58

    many of these like hard tedious tasks

  322. 13:00

    that would have taken like countless

  323. 13:02

    hours before.

  324. 13:04

    And then for us like the code is the

  325. 13:06

    product. People download the code, they

  326. 13:08

    build on the code, users interact with

  327. 13:11

    our APIs, they read our docs, and they

  328. 13:12

    build on our architecture. So any

  329. 13:14

    laziness in the the quality of the code,

  330. 13:17

    the SDKs that we ship to users

  331. 13:20

    translates directly into a worse

  332. 13:22

    developer experience and people either

  333. 13:24

    getting upset, their businesses being

  334. 13:26

    stalled, or them turning off the

  335. 13:27

    product. So coding agents have been

  336. 13:30

    excellent at maintaining uh tasks like

  337. 13:33

    verifying release checklists,

  338. 13:35

    backporting bug fixes onto stable

  339. 13:36

    releases, and ensuring our docs and

  340. 13:38

    documents are of extremely high quality.

  341. 13:41

    We still do write a lot of docu comments

  342. 13:44

    ourselves, but it's very easy to give

  343. 13:46

    the agent a task of making sure

  344. 13:47

    everything is documented properly.

  345. 13:49

    Everything has an example and everything

  346. 13:51

    actually is documenting the thing that

  347. 13:53

    it says in the way that it says. Um, as

  348. 13:56

    humans, you know, you'll go edit the

  349. 13:58

    code, but you won't edit the comment.

  350. 13:59

    So, a lot of your comments will actually

  351. 14:01

    be out of date over time and things get

  352. 14:02

    very confusing. Um, and if you just look

  353. 14:05

    at the numbers, we've shipped more patch

  354. 14:07

    releases in our most recent DAXis

  355. 14:09

    version than we ever had before. So,

  356. 14:10

    we've been able to maintain weekly or

  357. 14:12

    multiple times a week release cadence

  358. 14:14

    for a large ambitious piece of software

  359. 14:17

    in a way that we would be scared to do a

  360. 14:18

    release earlier.

  361. 14:21

    Um, one thing I'm not 100% convinced

  362. 14:24

    yet, uh, we have found varying levels of

  363. 14:27

    success is using AI to write tests or at

  364. 14:30

    least blindly writing tests. Um, one

  365. 14:34

    place we've struggled with Diosis is

  366. 14:36

    testing. It can be very hard to test

  367. 14:38

    foundational software, especially like

  368. 14:40

    end to end for complex systems. It's

  369. 14:43

    hard to test that your extension

  370. 14:44

    installs into zed and works the way you

  371. 14:46

    want it to do with literally opening zed

  372. 14:48

    and like using the extension. Um, the

  373. 14:52

    coding agents struggle here too to an

  374. 14:54

    extent. Uh, they also are, you know,

  375. 14:58

    have a tendency to write kind of sloppy

  376. 14:59

    tests. you'll give it a constructor and

  377. 15:01

    then it will go test the constructor and

  378. 15:02

    that's not a very interesting test. Um

  379. 15:05

    they can easily write tests for any

  380. 15:07

    given API but much like humans they fail

  381. 15:09

    to write the right tests. So we still

  382. 15:12

    find ourselves enumerating test

  383. 15:14

    conditions manually um crafting test

  384. 15:16

    APIs our ourselves and handling test

  385. 15:19

    runners um but it is sometimes a great

  386. 15:22

    sounding board to come up with the test

  387. 15:24

    ideas for a particular thing you're

  388. 15:26

    trying to to make sure has coverage and

  389. 15:28

    then enumerating the the edge conditions

  390. 15:31

    um but one place that we have actually

  391. 15:32

    really enjoyed using coding agents to do

  392. 15:34

    testing is building test harnesses. So

  393. 15:37

    fuzzing is a critical part of building

  394. 15:40

    like production grade software which

  395. 15:43

    means taking your application and

  396. 15:44

    putting it under millions of different

  397. 15:46

    inputs and quite often adversarial

  398. 15:49

    inputs basically like malformed inputs

  399. 15:52

    or uh ways of using the software that

  400. 15:54

    users should not be using the software

  401. 15:56

    but they they can use the software and

  402. 15:58

    coding agents are excellent at building

  403. 16:00

    these harnesses.

  404. 16:03

    Um, one thing we've found that code

  405. 16:06

    extra code architecture is still an art.

  406. 16:08

    Um,

  407. 16:11

    coding agents enable you to ship at an

  408. 16:13

    exceptionally high velocity. I mentioned

  409. 16:14

    this earlier. If the substrate on which

  410. 16:16

    your coding agents code lands is bad,

  411. 16:19

    their contributions will be bad as well.

  412. 16:22

    Unlike a human engineer, coding agents

  413. 16:23

    aren't typically afraid to voluntarily

  414. 16:26

    go on a huge refactor of a system or

  415. 16:28

    redesign the architecture when a feature

  416. 16:29

    doesn't quite fit. They'll typically

  417. 16:31

    just ship. Most of our development time

  418. 16:33

    is actually now spent thinking about

  419. 16:35

    software architecture about what

  420. 16:37

    features we'll want in the future and

  421. 16:38

    how the system will evolve. Just like

  422. 16:40

    human engineers can write spaghetti

  423. 16:42

    code, so can the agents, but now just

  424. 16:44

    faster. However, I will say with fable

  425. 16:48

    level tools, the actual code quality

  426. 16:50

    itself is so high, provided you properly

  427. 16:52

    communicate your intent, that proper

  428. 16:55

    software architecture will probably take

  429. 16:57

    the vast majority of time in the future.

  430. 16:59

    Actual code writing, not so much.

  431. 17:02

    Um, one thing we do for Daxis, which

  432. 17:05

    maybe you guys still do, maybe you

  433. 17:07

    don't, uh, is we review every PR line by

  434. 17:10

    line. Um, we definitely use AI review to

  435. 17:13

    spot bugs ahead of time, but we still do

  436. 17:16

    like to read the code that we ship. We

  437. 17:19

    receive lots and lots of PRs from

  438. 17:21

    strangers. Actually, uh, Daxis is big

  439. 17:23

    open source project. Uh, and not every

  440. 17:25

    PR is made the same. Uh we find that

  441. 17:28

    users can be quite bad at communicating

  442. 17:29

    their intent to the models. Contributors

  443. 17:32

    don't usually think deeply about how the

  444. 17:33

    codebase should evolve over time. They

  445. 17:35

    just want their bug fix or their feature

  446. 17:36

    in. Uh and many solutions are glued in

  447. 17:39

    place. So we're we're not quite at the

  448. 17:41

    point where the coding agents can read

  449. 17:43

    our minds. Uh and thus we're still

  450. 17:45

    limited by the medium of text. And as

  451. 17:48

    ridiculous as it sounds, prompt

  452. 17:49

    engineering is quite real. The quality

  453. 17:51

    of an implementation can be very much

  454. 17:52

    dependent on the the prompt that you

  455. 17:54

    give the model.

  456. 17:56

    But in a sense, nothing really has

  457. 17:58

    changed. Reading code has always been

  458. 18:00

    more important than writing code. Um

  459. 18:02

    maybe not in the beginning, but

  460. 18:04

    eventually as the project evolves, uh it

  461. 18:06

    does.

  462. 18:07

    So my closing thoughts on on using

  463. 18:10

    coding agents to build ambitious

  464. 18:12

    software is that code is now cheap, but

  465. 18:14

    quality is not. Um the the job of a

  466. 18:18

    software engineer has never really been

  467. 18:20

    about putting lines of code on the

  468. 18:21

    screen. It's it's been about

  469. 18:24

    architecting elegant solutions to

  470. 18:26

    complex problems to thinking 10 steps

  471. 18:28

    ahead about how a system will evolve

  472. 18:30

    about retaining flexibility in the face

  473. 18:32

    of changing requirements. These facts

  474. 18:35

    have not changed and the bar for

  475. 18:37

    software engineering is higher than

  476. 18:39

    ever.

  477. 18:41

    Uh if you would like to work on the

  478. 18:43

    tools of the next generation of

  479. 18:44

    software, Cognition, the people who have

  480. 18:46

    acquired Dioxis are hiring. Uh the Daxis

  481. 18:49

    team joined Cognition to be part of the

  482. 18:50

    future and hopefully you will too. Thank

  483. 18:53

    you.

  484. 18:55

    [applause]

  485. 19:10

    >> [music]