▶ Watch ↗19:24
Conference affiliation: Zed
Richard Feldman created the Roc programming language to bring the style of functional programming he used in Elm to servers and command-line tools. Based in Philadelphia, Richard is a software engineer at Zed Industries, where he helped build Delta so a developer taking over a colleague’s work can see the code, ask the agent what they tried, and pick up the conversation where they left off.
Richard joined NoRedInk, a company that makes software for teaching writing, as an engineer in fall 2013. He introduced Elm to its frontend in 2015. After a year of using it, the team wanted a similar experience on the server. They tried Elixir in a couple of small production services and found that what they missed most was a library ecosystem built around pure functions. They adopted Haskell, enabled strict evaluation, and ported Elm’s standard library and several familiar packages.
Richard turned his experience writing production Elm into Elm in Action, published in 2020. Readers build a photo browser over the course of the book. As it grows, Richard shows them how to divide the code into modules, test the application, and call JavaScript libraries from Elm. He has also taught introductory and advanced Elm and introductory Rust for Frontend Masters. He hosts the Software Unscripted podcast.
Richard started Roc in 2018 and began writing its compiler in Rust in 2019. Elm compiled to JavaScript for the browser. With Roc, he wanted an Elm-like language that compiled to machine code. When he laid out his plans at an online meetup in 2020, he expected Roc to remain a spare-time project with a few volunteers. The meetup drew contributors, many of whom had never worked on a compiler. By 2022, when NoRedInk funded Richard to work on Roc full-time, fellow contributor Folkert de Vries had made more commits than Richard himself.
One of Roc’s distinctive choices is that each application uses a single platform to supply all its input and output operations. A web server platform can give an application a way to answer an HTTP request. An existing program can also serve as the host for a small piece of Roc code. Vendr, where Richard worked in November 2023, used its Node.js backend to call individual Roc functions. That let the team move code over a function at a time while the rest of the backend kept running in Node.js.
In 2025, Richard and the Roc team chose to rewrite the compiler in Zig. Nearly every stage of the Rust compiler already needed a rewrite for reasons of its own, and even a change to the parser could leave a developer waiting more than 20 seconds for a rebuild. Richard also wanted to revisit an early optimization. Combining steps into fewer passes had sped up compilation at the cost of making errors harder to trace. For the new compiler, he favored giving each step its own pass when that made it easier to find where a result had gone wrong.
At Zed in 2024, Richard showed why an assistant sometimes needs information that lives outside the codebase. His example used Zed’s Model Context Protocol integration to bring a PostgreSQL schema into the conversation. A developer could then ask for a query, and the assistant had the actual table names, columns, and types to work with.
With Delta, Richard focused on a different kind of missing information. A branch shows the implementation someone kept. A teammate picking it up may also need to know which approaches they abandoned and why. Richard had started building an undo feature for agent conversations and had since set it aside. When a colleague’s agent suggested checking with him, the colleague invited Richard into the thread. Richard explained that his implementation was stale and the colleague was welcome to take it over. His answer stayed with the code, available to the next person or agent working on it. By September 2026, the team was using Delta for review and merging and had turned off pull requests on Delta’s own repository.
▶ Watch ↗19:24
Loading more talks and highlights…