Building ambitious software — Jonathan Kelley, Dioxus Labs & Cognition

AAI Engineer
Computing/SoftwareSmall Business/Startups

Transcript

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

Key Takeaway

AI coding agents eliminate the cognitive burden of writing verbose Rust code and accelerate feature delivery, shifting the primary engineering focus entirely toward software architecture and code quality.

Highlights

  • Dioxus achieved nearly 37,000 GitHub stars and millions of downloads with an estimated cumulative base of over 200 million end users across global deployments.

  • The Blitz rendering engine extracts the CSS layout engine from Firefox and consumes less than 50 megabytes of RAM at runtime with bundle sizes under 5 megabytes.

  • SubSecond performs generic hot reloading for Rust, C, and C++ codebases in 100 milliseconds across all major operating systems and WebAssembly targets.

  • Kotlin and Swift plugins for Dioxus were shipped within two to three weeks using AI coding agents.

  • Cognition acquired Dioxus, and the Dioxus team joined Cognition to develop next-generation software tools.

Timeline

Origins and Evolution of Dioxus

  • Jonathan Kelley started Dioxus as an undergraduate summer project in 2021 to build a cross-platform app framework in Rust.
  • Dioxus eliminates virtual machines, inter-process communication, and JavaScript layers by rendering native apps directly from Rust, HTML, and CSS.
  • The project grew to over 200 million end users powering applications like AI assistants, voting software, data science tools, and satellite collision avoidance systems.
  • The Blitz engine provides a lightweight web rendering pipeline while SubSecond enables 100-millisecond hot reloading for compiled languages.

Building a cross-platform app framework in 2021 required creating nearly every component from scratch because off-the-shelf tooling for Rust UI development was virtually nonexistent. Over five years, the project expanded to support cross-platform rendering, hot reload, and bundle splitting. The resulting ecosystem includes specialized engines like Blitz for hybrid GPU rendering and SubSecond for native code patching across operating systems and WebAssembly.

Adopting AI Coding Agents

  • Early attempts to use AI agents resulted in thousands of lines of draft code that failed strict quality standards.
  • AI agents successfully handle the development burden and edge cases of writing Rust, turning the steep learning curve into an advantage.
  • Software quality remains paramount because inferior underlying substrates compromise everything built on top of them.
  • Maintaining high standards for documentation, examples, tests, and benchmarks is critical for software that businesses rely on.

Initial excitement with AI coding agents led to maxed-out cloud subscriptions and tens of thousands of generated lines of code that sat in draft due to quality concerns. Engineers must avoid becoming slop cannons by ensuring generated contributions clear rigorous quality bars. Because Rust is inherently strict, coding agents excel at fighting the borrow checker and managing development burdens, though proper architectural intent remains essential.

Practical Applications and Testing Challenges

  • Coding agents built deep Kotlin and Swift plugins for Dioxus in two to three weeks.
  • Agents recall CSS specifications instantly, accelerating layout debugging without requiring manual searches through browser source code.
  • Automating mundane tasks like verifying tarball directory structures frees engineers to focus on architecture.
  • Automated testing remains challenging because agents struggle to write comprehensive end-to-end test suites, though they excel at building fuzzing harnesses.

Agents act as patient assistants with massive knowledge bases that easily surpass individual human capacity across thousands of pages of build system and runtime documentation. While agents struggle with writing meaningful end-to-end tests for complex applications, they excel at generating fuzzing harnesses and validating release checklists. Routine tasks like backporting bug fixes and ensuring documentation accuracy are fully accelerated by AI assistance.

Architecture, Code Quality, and Future Outlook

  • Software architecture remains an art because coding agents will generate spaghetti code faster if the underlying substrate is poor.
  • Every pull request is reviewed line-by-line despite AI bug-spotting tools because contributors often struggle to communicate precise intent.
  • Code is now cheap, but high software quality is expensive and scarce.
  • The primary job of a software engineer involves architecting elegant solutions and planning system evolution rather than typing lines of code.

Prompt engineering remains constrained by the medium of text, requiring precise communication of architectural intent to models. Because code generation is fast and inexpensive, the ultimate value of a software engineer shifts entirely to system design, long-term evolution, and maintaining flexibility against changing requirements. Cognition acquired Dioxus to integrate the team into building the next generation of developer tools.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video