Episodes
Pony is a language born out of what should be a simple need - actor-style programming with C performance. On the face of it, that shouldn't be too hard to do. Writing an actor framework isn't trivial, but it's well-trodden ground. The hard part is balancing performance and memory management. When your actors start passing hundreds of thousands of complex messages around, either you need some complex rules about who owns and frees which piece of memory, or you just copy every piece of data and...
Published 10/31/24
Published 10/31/24
This week we take a look at Bevy, a new game engine written in Rust. And in particular, we look at a core component of Bevy that has something to teach you even if you never write a game: its Entity Component System, or ECS. An ECS is an approach to managing complex systems with large numbers of moving parts, that takes some inspiration from the Relational Database world, and a little from Functional Programming to build something entirely unique and surprisingly high-performance. Joining us...
Published 10/23/24
Given how many languages have been written in C over the years, it's not surprising to see new languages being written in Rust. What is surprising about this week's guest is the domain he's writing for: Computer Aided Design (CAD). Could Rust be sneaking its way into the CAD world too? Joining me to discuss the design and implementation of a CAD programming language is Adam Chalmers. He works at Zoo, developing KCL - a language that looks like JavaScript, runs on Rust, and offers users a...
Published 10/16/24
For some kinds of application, there is no faster or cheaper way to build a user interface than in the terminal. Sure, it's not going to suit every kind of user out there, but for those of us that are happy on the command line, rich Text User Interfaces (or TUIs) open all the exploration and discoverability benefits of a GUI are a fraction of the development time. This week we're looking at a Rust TUI library with the excellent name 'ratatui'. We're joined by Orhun Parmaksız, one of the lead...
Published 10/09/24
Lustre is a web framework that takes a lot of inspiration from Elm, some from React, and a surprising amount from Erlang's actor model, to provide a library that blurs the lines between executing on the client, or on the server. Support Developer Voices on Patreon: https://patreon.com/DeveloperVoices Support Developer Voices on YouTube: https://www.youtube.com/@DeveloperVoices/join – Lustre: https://hexdocs.pm/lustre/index.html Gleam: https://gleam.run/ Join the Gleam Community:...
Published 10/02/24
I'm always interested in what factors shape the design of a programming language. This week we're taking a look at a language that's wholly shaped by its need to support a very specific kind of program - audio processing. Anything from creating a simple echo sound effect, to building an entire digital instrument based on a 17th-century harpsichord. The language in question is Faust, and this week we're joined by Romain Michon, who works on and teaches Faust, as we look at how it's designed,...
Published 09/25/24
This week we take a look at what you can do with a GPU when you get away from just using it to draw polygons. Agnès Leroy has spent most of her career programming, optimizing and converting programs to run on that oh-so-curious piece of specialised processing hardware, and we go through all the places that journey has taken her. From simulating the flow of fluids in hydroelectric powerstations, to figuring out how to make a new approach to encryption run fast enough to make it...
Published 09/18/24
OCaml has one of the best-loved compilers available, and parts of it are surprisingly pluggable, so it's not surprising that someone would eventually try to wed OCaml with JavaScript and the web browser. In fact, the ecosystem has gone further, and there are now a bevvy of options for people who want to write OCaml and run it in the browser, or want to write OCaml in the browser, or want to write something that looks like JavaScript but runs OCaml on the backend. Joining me to explore the...
Published 09/11/24
Mapping is a hugely complex task to take on. Even if you moved as much of the data-management as you can out to 3rd-party services, you'd still have a tonne of work to do weaving together map tiles, routing information, GPS data, points of interest, search and more. And as if that wasn't enough, you'd probably want that software to work on a whole range of platforms, so you have to build something that works on iOS, Android and more. It's little wonder that the space is dominated by a few...
Published 08/21/24
The terminal might be the most used development tool in history. So it's a little odd that it hasn't changed that much in the decades since the terminal first came into being. Is the terminal a "completed" project? Or are there new ways to look at it that might make it even more useful? This week's guest—Zach Lloyd—is convinced the terminal is ripe for a new approach that's more than just a new coat of paint. And in this episode we dive into what that approach is, what he's trying to do with...
Published 08/14/24
A language's AST—it's abstract syntax tree—is nearly always a hidden implementation detail. It's not treated as part of the language, but merely the intermediate step between parsing and compiling. But this week's guest aims to flip that relationship on its head... Peter Saxton joins me to talk about EYG - an AST-first language that defines the fundamental capabilities first, and then stretches out from there to surface syntax and final execution. The result is something that can teach us a...
Published 08/07/24
DuckDB's become a favourite data-handling tool of mine, simply because it does so many small things well. It can read and write a huge number of data formats; it can infer schemas automatically when you just want to move quickly; and it can interface with most languages, run like lightning on the desktop or be embedded into a webpage. I'm a huge fan. But I'm not nearly as knowledgeable as this week's two fans, Simon Aubury and Ned Letcher, who've just written a book on all the many ways you...
Published 07/31/24
RRWeb is based on a simple idea: If you capture all the DOM events in a browser session, and when they happened, you could play it back later. Play it back for diagnosing error conditions, for understanding your user's journey, or for creating demo videos that can be edited element-by-element instead of frame-by-frame. Unfortunately, the simple idea gets tricky when you try to implement, for a whole host of browser specific glitches, differences, and places where the HTML5 spec ran out. It's...
Published 07/24/24
The ZigLang team have put an astonishing amount of effort into making Zig work an effective tool for compiling C across different architectures. Work that benefits the Zig language, but also has a chance to benefit languages like Python and Rust. Or indeed, any language that uses native C libraries somewhere in its stack. So this week we're joined by Loris Cro of the Zig team to dive into how you make a reliable, cross-platform toolchain that can compile C anywhere it finds it. And in doing...
Published 07/17/24
Back in 2012, José Valim started building Elixir to as a way to have his ideal programming language running on the same platform as Erlang. Fast-forward 12 years and it's become build anything from distributed infrastructure to notebooks and websites. In this week's Developer Voices, José joins us to tell the history of Elixir in a series of design choices. Which features mattered to him in the early days, and which ones excite him most now. What's going on under the hood to make Elixir...
Published 07/10/24
There's huge pressure on Python at the moment to get faster, ideally without changing at all. One increasingly–popular way of achieving that impossible task is to push the performance critical code down into C, C++, or Rust. And this week we're focussing on the Python route, as we take a look at PyO3. David Hewitt's the principal committer to PyO3, and he joins us to go through the easy parts, the hard parts, and the works in progress, giving us an insight into how Python and Rust work under...
Published 07/03/24
Most message systems have an opinion on the right way to do inter-systems communication. Whether it's actors, queues, message logs or just plain ol' request response, nearly every tool has decided on The Right Way to do messaging, and it optimises heavily for that specific approach. But NATS is absolutely running against that trend.  In this week's episode, Jeremey Saenz joins us to talk about NATS, the Cloud Native Computing Foundation's configurable message-passing and data-transfer...
Published 06/26/24
Smalltalk is one of those programming languages that's lived out of the mainstream, but often referenced as an influence and an important part of programming history. It's the cornerstone of object-oriented programming, it was into message passing before actors were cool, and it blurs the line between operating system, programming language and personal notebook. But what is it? Joining us to discuss it is Juan Vuletich, the creator of one of Smalltalk's latest incarnations, Cuis. In this...
Published 06/19/24
This week we take a close look at the language Inko from two perspectives: The language design features that make it special, and the realities of being a language developer. Yorick Peterse joins us to discuss why he's building Inko, and which design sweetspots he's looking for. We begin with memory management, aiming for the kind of developer who wants control, but without the complexities of Rust. Then we look at the designing for concurrency with typed channels, and handling exceptions by...
Published 06/12/24
I've often wondered how you build a text editor. Like many software projects, it's a simple idea at the core with an almost infinite scope for features. How do you build a solid foundation to expand on? Which features matter for launch? And how do you hope to satisfy the needs of every programmer, working in every language? My guest for this episode is Nathan Sobo. He's tackled this problem once before with the Atom editor, and he's back older & wiser with Zed - a new editor written...
Published 06/05/24
This week on Developer Voices we're talking to Ryan Worl, whose career in big data engineering has taken him from DataDog to Co-Founding WarpStream, an Apache Kafka-compatible streaming system that uses Golang for the brains and S3 for the storage. Ryan tells us about his time at DataDog, along with the things he learnt from doing large-scale systems migration bit-by-bit, before we discuss how and why he started WarpStream. Why re-implement Kafka? What are the practical challenges and cost...
Published 05/29/24
PostgreSQL is an incredible general-purpose database, but it can't do everything. Every design decision is a tradeoff, and inevitably some of those tradeoffs get fundamentally baked into the way it's built. Take storage for instance - Postgres tables are row-oriented; great for row-by-row access, but when it comes to analytics, it can't compete with a dedicated OLAP database that uses column-oriented storage. Or can it? Joining me this week is Philippe Noël of ParadeDB, who's going to take...
Published 05/22/24
The actor model is a popular approach to building scalable software systems. And isn't hard to understand when you're just reading about the beginner's examples. But how do you architect a complex design using the actor model? Which patterns work well? How do you think through it? Joining me to take us through it is Hugh McKee. Hugh's a total actor-model fan, and a Developer Advocate for Lightbend (the company that created the popular actor framework Akka). He takes us from his definition of...
Published 05/15/24