Our interconnected world is increasingly reliant on distributed systems of unprecedented scale, serving applications which must share state across the globe. And, despite decades of research, we’re still not sure how to program them! In this talk, I’ll show how to use ideas from programming languages to make programming at scale easier, without sacrificing performance, correctness, or expressive power in the process. We’ll see how slight tweaks to modern imperative programming languages can provably eliminate common errors due to replica consistency or concurrency—with little to no programmer effort. We’ll see how new language designs can unlock new systems designs, yielding both more comprehensible protocols and better performance. And we’ll conclude by imagining together the role that a new cloud-centric programming language could play in the next generation of distributed programs.