Discover the future of software from the people making it happen.Listen to some of the smartest developers we know talk about what they're working on, how they're trying to move the industry forward, and what you can learn from it. You might find the solution to your next architectural headache, pick up a new programming language, or just hear some good war stories from the frontline of technology.Join your host Kris Jenkins as we try to figure out what tomorrow's computing will look like the best way we know how - by listening directly to the developers' voices.
Building the SpacetimeDB Database, Game-First (with Tyler Cloutier)
Eighteen months ago, Tyler Cloutier appeared on the show with what sounded like an ambitious (some might say crazy) plan: build a new distributed database from scratch, then use it to power a massively multiplayer online game. That's two of the hardest problems in software, tackled simultaneously. But sometimes the best infrastructure comes from solving your own impossible problems.
The game, Bitcraft, has now launched on Steam. SpacetimeDB has hit version 1.0. And Tyler returns to share what actually happened when theory met production reality. We cover the launch day performance disasters (including a cascading failure caused by logging while holding a lock), why single-threaded execution running entirely from L1 cache can outperform sophisticated multi-threaded approaches by two orders of magnitude, and how the database's reducer model - borrowed from functional programming - enables zero-downtime code deployments. We also get into how SpacetimeDB is expanding beyond games with TypeScript support and React hooks that make building real-time multiplayer web apps surprisingly simple.
If you're building anything where multiple users need to see the same data update in real time - which, as Tyler points out, describes most successful applications from Figma to Facebook - SpacetimeDB's approach of treating every app as a multiplayer game might be worth understanding.
--
Support Developer Voices on Patreon: https://patreon.com/DeveloperVoices
Support Developer Voices on YouTube: https://www.youtube.com/@DeveloperVoices/join
SpacetimeDB: https://spacetimedb.com/
SpacetimeDB on GitHub: https://github.com/clockworklabs/SpacetimeDB
Our previous episode with Tyler: https://youtu.be/roEsJcQYjd8
Clockwork Labs: https://clockworklabs.io/
Bitcraft Online: https://bitcraftonline.com/
Bitcraft on Steam: https://store.steampowered.com/app/3454650/BitCraft_Online
WebAssembly: https://webassembly.org/
Flecs (ECS for C/C++): https://www.flecs.dev/flecs/
TigerBeetle: https://tigerbeetle.com/
CockroachDB: https://www.cockroachlabs.com/
Google Cloud Spanner: https://cloud.google.com/spanner
Erlang: https://www.erlang.org/
Apache Kafka: https://kafka.apache.org/
Tyler Cloutier on X: https://x.com/TylerFCloutier
Tyler Cloutier on LinkedIn: https://www.linkedin.com/in/tylercloutier/
--
Kris on Bluesky: https://bsky.app/profile/krisajenkins.bsky.social
Kris on Mastodon: http://mastodon.social/@krisajenkins
Kris on LinkedIn: https://www.linkedin.com/in/krisjenkins/
0:00 Intro
2:01 The Architecture of SpacetimeDB
5:01 Client-Side Prediction in Multiplayer Games
11:00 Reducers and Event Streaming
15:00 Launching Bitcraft on Steam
19:00 Debugging Launch Performance Problems
26:56 Hot-Swapping Server Code Without Downtime
30:01 In-Memory Tables and Query Optimization
42:00 Is SpacetimeDB Only For Games?
51:00 Performance Benchmarking For Web Workloads
55:00 Why Single-Threaded Beats Multi-Threaded
1:00:01 Multi-Version Concurrency Control Trade-offs
1:05:01 Sharding Data Across Multiple Nodes
1:10:56 Inter-Module Communication and Actor Models
1:17:00 Replication and the Write-Ahead Log
1:24:00 Supported Client Languages
1:29:00 Getting Started With SpacetimeDB
1:39:02 Outro