In short
The Changelog: wsl.exe -- cat hello.cs (Friends)
Episode Overview In this episode of *The Changelog*, hosts engage in a lively discussion about Microsoft's Windows Subsystem for Linux (WSL) with Craig Loewen and dive into the design aspects of C# with Mads Torgersen during Microsoft Build 2025.
Episode Highlights
Introduction
- Hosts: Adam Stacoviak and Jerod Santo welcome listeners to the show.
- Partners Mentioned: Fly.io, a cloud platform for developers.
- Episode Focus: Excitement around Heroku’s next generation and a deep dive into WSL and C#.
Segment 1
Heroku's Next Generation
- Guest: Chris Peterson, Senior Director of Product Management for Heroku at Salesforce.
- Key Topics:
- Introduction of the FUR platform and its significance for developers.
- Adoption of OpenTelemetry for metrics, moving beyond previous technologies.
- Emphasis on open standards and the ecosystem effect, enhancing user experience through tools and features.
- Upcoming features focused on supply chain security and integration with AWS VPC endpoints.
Segment 2
Windows Subsystem for Linux (WSL)
- Guest: Craig Loewen, discussing the open-sourcing of WSL.
- Key Topics:
- WSL allows running Linux alongside Windows, improving developer workflows.
- The recent decision to open-source WSL, including the Windows kernel and graphical libraries.
- Ease of installation through commands like `wsl.exe --install`.
- Performance benefits and the architecture of WSL, which enables quick access to Linux environments.
- Discussion around user satisfaction with WSL and the path to better performance and features.
Segment 3
C# Language Design
- Guest: Mads Torgersen, lead designer of C#.
- Key Topics:
- Overview of the evolution of C#, transitioning from a Windows-only language to a cross-platform one.
- Balancing performance with new features to keep C# modern and relevant.
- The collaborative nature of language design, including discussions on functional programming features like pattern matching and extension methods.
- The impact of AI and evolving software environments on programming languages.
Key Takeaways
- Heroku: Committed to enhancing developer experience with a focus on open standards and community-driven features.
- WSL: Significant improvements and open-sourcing help bridge the gap between Windows and Linux development, making it a powerful tool for developers.
- C#: Aimed at continuous evolution and adaptation to maintain relevance and performance within a competitive programming landscape, with a focus on community feedback and collaboration.
Conclusion
- The episode wraps up with notes of excitement for upcoming innovations and changes across frameworks and languages, highlighting the intersection of technology, developer experience, and community engagement.
Closing Remarks
- Next Episode Teasers: Insights into a forthcoming interview with Amanda Silver, corporate vice president for Microsoft’s Developer Division.
- Changelog++ Members: Access to a bonus segment discussing custom PC building with Adam and Craig.
Additional Information
- Sponsors: Thanks to Fly.io, Heroku, and Depot.dev for supporting the episode.
- Music: Background beats by Breakmaster Cylinder.
---
This structured summary provides a comprehensive overview of the episode, highlighting key discussions and insights shared by the guests and hosts, ensuring clarity and ease of understanding for readers.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:14Welcome to changelog and friends, a weekly talk show about backslashes still being trash. Thanks, as always, to our partners at Fly.io, the public cloud built for developers who ship. We love Fly. You might, too. Learn all about it at Fly.io. Okay, let's talk.
0:42Well, friends, you know I'm excited about the next generation of Heroku. Who isn't? Well, I'm here with Chris Peterson, Senior Director of Product Management for Heroku at Salesforce. Chris, tell me, why should developers be excited? So the FUR platform, what does that mean to you as a Heroku developer? It means a few things. One, it means that we're going to be working on investing in our ecosystem. One of the standards we're adopting, open telemetry, is a big step up over the way Heroku's done metrics traditionally. We had a piece of technology called L2Met that converted logs into something that kind of approximated open telemetry metrics.
1:15but now there's like a real standard. There's like a real toolkit and there's a whole ecosystem around O-Tel. And so being able to have open telemetry dashboards out of the box at our partners that tap into all of your Heroku telemetry so that you don't have to go build a dashboard and you're not necessarily constrained to what we provide on our dashboard is exactly the type of value we're seeing out of this. So it's tapping into the ecosystem effect. Similarly, cloud-native build packs. One of the features that I'm excited about is supply chain security that we're going to be working on later this year.
1:43But that was an open source contribution to the CNB project itself. Bloomberg actually contributed support for software bill of materials generation. And so the things that I'm excited about are the things that developers are excited about, which is we're not going it alone. We're not building a proprietary solution. We're using the same tools and technologies as other superstars in the industry are. And we get to play into that ecosystem effect. A huge part of Heroku's value has always been the elements marketplace, being able to bring in databases and key value stores and telemetry and observability tools.
2:15And so renewing our investment in open standards lets us renew our investment in our ecosystem and our marketplace. Very cool. So how is this next generation and what is coming changing the game for you and the product team? To me, on the product team, let's be put out a roadmap that's way more ambitious than what I could do if we were trying to build some of the primitives ourselves. Kubernetes has really established networking technology. That means our roadmap has a lot of networking features that our customers have been asking for for a while that were going to be a lot slower to build on the Cedar stack than they are on the Fur stack.
2:46And so you should be excited about the open standards and the modernization there on day one. But the thing that I'm excited about is what we can do by the end of the year in terms of roadmap and features, not just getting to parity on some of the more nuanced features that we have on Cedar, on Fur, but also the new things that we could build, taking advantage of AWS VPC endpoints, which is something that Salesforce customers have wanted for a while. There's a huge number of these features that just wouldn't be possible to get done this year otherwise. And that's where I'm excited. Very cool. I love that.
3:17Well, friends, the next generation of Heroku, I'm excited about it. I hope you're excited about it. I know a lot of people who have been really, really looking forward to the next thing from Heroku. To learn more, go to heroku.com slash changelogpodcast and get excited about what's to come for Heroku. Once again, heroku.com slash changelogpodcast.
3:47We are taking you back to Microsoft Build 2025. Next up, we sit down with Craig Loewin for a deep dive on Windows subsystem for Linux. Here's Craig. Let's begin here then. How about this? We asked for somebody who can school us in WSL. Nice. Okay. Are you open sourcing of it? I'm the one. I thought Twitter. All the things. Where should we begin? What should the world know about WSL? So the big news this week is that we took the Windows subsystem for Linux. Yes. And we open sourced it. So what exactly does that mean? Because we actually have a bunch of different aspects of WSL. It touches a lot of different places in the OS.
4:28And to put it in a sentence, what we did is we took the code, the logic that says, give me a Linux VM, make all of my Windows files access it, give me access to the GPU. We took all of that, and that is open sourced. And so that joins some of the other projects that we already have open sourced, like the kernel that powers WSL is open source, as well as our graphical library, basically repository called WSLG to power GUI apps in WSL, also open source. So the only thing that's not open source these days is the WSL1 implementation. Which is old, right? Old and busted. Yeah, which is the old version.
5:08It's not the default anymore. And the reason why we're leaving that closed source is because it's very tied to the Windows image, whereas everything that we've done now, we've been able to remove it from the Windows image. It ships out of band to the Windows image. It does. So now we're able to fully open source it. You have to enable it and install it too, right? Right. So you can run WSL-install to install the full thing. Well, what that does is it installs an MSI from GitHub, which does the WSL logic. And then it enables the virtual machine platform optional component in Windows, which gives you virtualization.
5:42The thing that bugs me about Windows is and I'm new to it, so it's not even a criticism. It's just more like I don't know how to do it, and it seems hard to do it. It seems like it should be more logical. It's how to make it dev mode. Oh, I see. To go from Windows Pro to dev mode. I'm coming for WSL. I'm coming for the awesomeness that Windows is. But the marriage of Linux and the Linuxes of the world in concert with Windows and running R-Sync and HTOP on just different Linux commands in this Windows world is like a really cool thing, I think. And I feel like WSL is going to keep making that better and better and better and potentially draw Mac users over to this world.
6:25I went back from things that's only on the iOS Mac platform as a to-do platform to Todoist because Todoist is everywhere. And it's so fast on Windows. Like, I click on the icon and it's up. On a Mac, I click on the icon and I wait and I wait and I wait and I wait and then it's up. And like the experience on a Windows machine is like night and day. But WSL is why I'm coming. For sure. And we actually, so the team that I work on is the developer experiences on Windows team. And we own some other different areas like Windows Power Toys as well as Windows Terminal. And so we are trying to bring a lot of that, hey, I love using Windows because this developer-focused feature, trying to bring that at those experiences.
7:15Right. So one of the other things that we just did this year at Build was in Windows settings, we made advanced settings a page. So it takes a lot of those feature requests of things like, hey, I want to turn on. One of the things we added there was long file paths is now a toggle there, which is awesome. Being able to turn on end task again. So you right click on something in the task bar and it has end task. We put all of those in one place. So for your question of, hey, how would I get dev mode? I would really recommend checking out the advanced settings page. And you can flip through that and it should really quickly set you up.
7:51How about this? How about this? Instead of that, how about y 'all create a, would you call it a 2E in PowerShell? Like you said the GUI, the WSL GUIs. Why don't you do a GUI app that gives me a menu that says, yes, yes, yes, no, no, no, take away, move, like the Titus scripts do and things like that to make it Windows kind of for everybody and kind of Windows for everybody plus developers. Oh, like a – Make it a little bit more like hands-on guided tour versus figure it out, which is kind of like that's an answer. Go check out the settings menu. That's good, but it's not the guided tour. For sure.
8:30Like you're wanting a, hey, let me run through this, maybe an extra setup. Are you asking for a wizard? Is that what you're asking for? A wizard? It really is. Well, Titus Scripps, I forget what it's called. I think it's called Titus Scripps. Yeah. It's Chris Titus. He's well-known out there on YouTube. We'll link in the show notes. But I use whatever he suggests. And it's this GUI that does that, but it's third party. Not to say that it's bad or good, and I don't even know how to qualify that, but bring that in-house. Like, you have a massive amount of developers just make it easier for developers to use your machine.
9:01Yeah. Is what I want. Totally. And that's a really cool idea. And I think some of the other things that we're working on that would work really well with something like that are a Winget. And you might have seen the Windows package manager being able to Winget install. You know, I can install things directly through that. Yeah. The other cool feature that's coming out of that is Winget configure. So what's neat is you have a YAML file, and it's a description of the state of your computer. So you're saying, I have these apps installed, and these are the status of my settings. And what's neat about that is you go, Winget configure, apply this configuration, and it will put your computer in that state.
9:37Which is awesome, because I actually use that as my setup script. That's so wild. And it's not even a script, because I can apply it to a machine at any time. I don't have to worry about, like, oh, is this going to mess anything up or change it? because it's not a script running that's running commands that could fail. It's literally checking, is this thing installed? If it's not, install it, which is a pretty powerful tool. Yeah, there's a lot of cool things happening there. And it goes back to almost like that. I mentioned to Jared in other shows, and obviously he and I podcast, and you're the newbie here, right, to this scenario here.
10:10No offense. But I've told him before, I run a podcast. I've been podcasting for a very long time. And I think this show was at least 12 years ago. And it was the Microsoft before VS Code. It was the Microsoft before TypeScript. It was the Microsoft when you had less developer love. And you all were kind of like making the seemingly good choices to have this comeback, so to speak. Because in my eyes, you were less cool and everything Mac was super cool, just generally. But there was a major shift there. And I was calling. I was like, you know what? because of this, I can't remember what it was, but it was around 12 years ago, because of something y 'all did, I'm like, they're going to be coming back.
10:49They're going to start doing things because I'm seeing this change, and it's not this accident. It's on purpose, and I feel like a lot of this is just like, there's such cool stuff in there, so WSL is a big part of that. So tell me about the cool things you can do with WSL, and specifically WSL 2. So the primary use case for the Windows Houses for Linux or WSL is running your Linux workflows, apps, tools, utilities, and more. And so it really runs the gamut of what you're able to do with it. For example, the Minecraft team at Microsoft, they program Minecraft, they use WSL to actually do that.
11:28We see teams who make the Linux kernel for Azure and both for WSL. They also use WSL. Even if you remember the Android phone that Microsoft made, the Surface Duo, that was also programmed with WSL. And so what I kind of love about it is it is this really wide range of customer base that we get, of use cases that you get with it. And anything from, hey, I want to build a website, I want to train an AI model, or program a phone, are things you're able to do with it. And so it is a pretty powerful tool. Yeah, for sure. Can you explain to me exactly how it works? Yes. Without whiteboarding? Do your best.
12:11You're right. So the architecture is we actually have a virtual machine that powers it. And it's a virtual machine that we actually took, that technology took is in quotes, from Azure. And so it's a utility VM, a lightweight utility VM. And we have a kernel in it that's preloaded. So we kind of skip the necessary boot process. We basically go from cold start to ready to bash terminal that's ready for input in about two seconds on average, which is like blindingly fast to pull up a full VM. And we also get a lot of other cool benefits from using that tech, like the amount of memory that we have in that VM expands and shrinks as you use it over time.
12:54And so we do a lot of work to try and conserve all of your resources so it feels like the same machine. So what really happens is you run WSL.exe, and then we have a service on Windows that goes and talks to, there's a set of APIs called the host compute service. That depends on a subset of Hyper-V APIs based on the virtual machine platform component. And it talks to that and says, give me a VM. So we get one of those lightweight VMs. We load the Linux kernel in it, which is included with the WSL package. And then we start a single VM, and we have our own custom init process inside of that. So we start this Linux process, and then we take a look and say, okay, what distro is the user loading?
13:38So the user is saying, like, I'm loading Ubuntu. And we say, okay, we find that VHD where the user has their Ubuntu data, and then we load that and mount that into our WSL VM. And so all of your distros, when you're running them simultaneously in the same VM, they're running almost like containers. because they're separated by namespaces in Linux. And so you're running it there, and then we do some final work to basically do some plug-and-play bits, like we mount your Windows drives for you. We do some work to mount your GPU. We have a special GPU device. We basically do the finishing touches, and then after that, we load that VM and connect the standard in and out, and you're done.
14:20So it touches a lot of different parts in the OS, but it's pretty cool that that all happens in two seconds. In two seconds. Yeah. And that's the first time you use it, obviously, like after a reboot or whatever. It's going to stay running. So subsequent calls are all, I mean, it's just a VM running, basically. Exactly. And do you manage it like a VM? Like turn it on, turn it off, pause it, et cetera? You can, but we try to make it that invisible to the user. And so what we do is we listen if there's any open file handles on Windows. That's the technical term. But really it's, hey, do you have a terminal window open?
14:55Do you have anything listening for the output of WSL.exe? And if you don't, say I close all my terminal windows, oh, we go, oh, you're done using WSL. We wait a minute, and then we shut down the VM for you. And then when you go and start it up again, we start it up again for you. Because the startup time is so small. Yeah, we can save a lot of resources on your computer. And the way you get to, so tell them how you get to Ubuntu. Oh, so pretty easy. All you got to do is go to, if you literally go to your command prompt or PowerShell and type WSL space dash dash install, it will set up everything for you.
15:29You will probably need to reboot to enable virtualization if it's a fresh machine. And then once you reboot, Ubuntu will install automatically. And then after that, it will just open. You type in your new username and password, and then you'll be at bash. And from there, you can open up Terminal, and you'll have an Ubuntu profile with Ubuntu coloring and graphics. can run full GUI graphic apps. And we also now have support from a ton of new distros like Red Hat, Fedora, Arch Linux, and more. Joining the family with distros like Debian and OpenSUSE that have been there for a while. Here's a question slash idea.
16:05And I'd say it's an idea if it's a brand new thing. Okay. Unless you've already built it, then it would not be an idea. That's a question. Right. And so I'm a fan of Proxmox. Okay. Are you a fan of Proxmox? Do you understand Proxmox? No. What is it? Okay, so Proxmox is an open source Hyper-V for Linux. And so you can run a hypervisor, which is Proxmox, and you can install Linux. You can do VMs, essentially. When will or is it on the roadmap to make WSL like that? Because I love it because I can run one single machine in all my Linuxes and then marrying this with this potentially like, hey, Adam is no longer a Mac user, now he's a Windows user, but I also want to command an army of Linux, you know, sort of thing.
16:56But it takes even IP addresses. Like, Hyper-V has IP addresses and everything, full network, but they're VMs. Oh, I see. Are you wanting to run, like, multiple different virtual machines running Linux? Yeah. And what would be the use case for it versus... Well, one might be running PyHole, for example. Got it. One might be running Plex. Yeah. And that machine will have a mount automatically mounted on boot from my NAS, which is a whole separate machine that's running TrueNAS. And so that's a dedicated NAS appliance for the whole network. Right. Everything can store things there. Yeah. You know, everyone in my family has access to it.
17:37And it's all authenticated and it's provisioned and it's ZFS. It's amazing. Yeah. So that VM that could be running in WSL versus Proxmox would run Plex. I see. And then where is Hyper-V falling short for you for using that kind of scenario today? It's not on Windows. On Hyper-V? Is Hyper-V does that? So here's my, I'm not a Windows user, so I don't know what to use to get there. So does Hyper-V do it by itself? This is a thing? So in Hyper-V, you could set up a full VM. and the kind of, I think this is a great question of, which we get on the WSL team. What's the difference between using WSL and Hyper-V?
18:16That's my question, I guess. Right, exactly. Rewind. It is a question. As if that was the question. Great question. I knew what I wanted, but I didn't know existed. You know, what's out there that does it? Exactly. And so the answer there is WSL does use Hyper-V under the hood, right? But WSL is kind of the more specialized use case. So Hyper-V is going to give you a lot more of that fine-grained detail control, right? You're wanting, I want multiple VMs. I want to control exactly what mounts. I want to control exactly the networking behavior, NAT versus something else, etc. Having that level of fine-grained control over the virtual machines totally is a Hyper-V scenario.
18:56And for the scenario described, I think Hyper-V would meet those needs. And so where does WSL come into the play if Hyper-V behaves like that? The answer there is WSL is mainly trying to simplify that experience for a developer in a dev environment. Like Hyper-V, you're able to grab any Linux distro. You can set it up. You can have a full virtual machine and get it ready to go. But by nature of the extra layers of customization, that can take a little bit more time and setup. WSL is like the fast track of, I want to get started as quickly as possible. Just drop me an Ubuntu. And I want my GPU to work just as it would on a Linux device.
19:34And everything's pulled over. We kind of set that all up for you and make that just really easy to use from like A to Z. That's totally our goal. Gotcha. So is Hyper-V a non-Microsoft product? Is it somebody else's? Does it cost money? Is it open source? What is Hyper-V? So Hyper-V is based in Windows. It's a Windows feature. So it's an optional component that you can turn on and off inside of Windows. And it's available only on Pro SKUs and other SKUs as well. So it's not available on home is one of the other differences. I have Pro. I'm cool. Okay, great. So you'll be totally set up. Yeah, so you can just go to turn Windows features on or off, enable to Hyper-V, and then you'll be fully able to access it.
20:14And it's made and supported by Microsoft. Okay. How's the UI for it? Describe the interface. The interface is there's a Hyper-V manager, and then it has the ability to go in and enable and turn on and off and create or delete these virtual machines there. Okay. What is it like to do PCIe pass-through? Can you do things like that? Like how complex can you make these VMs? There's a lot more ability to make those complex. And so specifically, since I'm the product manager for WSL, Hyper-V is a much broader set of capability. And so for advanced things like PCI Express, best to go get statements from the Hyper-V team can give something more accurate.
20:57You know there's GPU pass here because you're using it. Right. So PCI. Gotcha. Probably some sort of interface to manage those things. I was curious about that. Probably. I mean, in the past, just as an example, these questions are less like enterprise because probably no one's doing that necessarily. But maybe they are. Maybe in dev environments. But it's more like a home lab question. So my curiosity was like, okay, I was beginning to tinker with the various NAS opportunities out there. And I was like, I want to play with it in a VM. And I want to pass through some virtual drives to this thing.
21:28Right. and sort of have a skunkworks of a TrueNAS install or an Unraid install or whatever it might be. And so my lure to Windows at this point is that WSL being there and then obviously Hyper-V enable these cool things while also running a very cool operating system alongside of it. I can have my cake and eat it too. Totally. And that's probably one of my favorite things about working on WSL is that there's a lot of reasons that I love Linux. I studied robotics in university, and we used a lot of Linux to program robots. Things like ROS, like the robotic operating system, et cetera. Very Linux-focused.
22:09And so I do love using Linux, but there's so much that I love about using Windows as well. For example, I really enjoy games. And being able to have my full set of games, and they work just as I've used them for a long time on Windows, is awesome. And now I have the ability to kind of run those both simultaneously on the same box has been amazing. Yeah, now having a KVM or something like that, how can we make it faster? Latency is probably the biggest concern. First of all, where does latency come from? How do you shrink it? What do you all do against it? Can you make it faster? Is it the fastest it will ever be, the latency between a Linux command on a Windows file system?
22:48What's the beans there? Totally. There is actually a really cool website for onyx.com. They're a third-party website, not directly affiliated with Microsoft. And they write articles about, hey, they compare on the same hardware, what's the performance for the Windows subsystem for Linux versus a bare metal version of Linux. And we do take a look at those and say, hey, this is a great understanding of where our performance is and maybe areas we could improve. In general, it's about a 5 % virtualization tax, 5 % to 10%. It depends on what you're doing. Surprisingly, there's actually scenarios where WSL is faster than bare metal Linux, just because of the nature of how things are set up.
23:35There are speeds. There are scenarios where that works, and there's also scenarios where we're going to be slower, especially around things like heavy I.O. is an area where we want to perhaps see some speed improvements. And so that is probably one of the areas that we want to improve. But I would say in general, if you're looking for speed and performance, we're very comparable to bare metal Linux, which is pretty great. Yeah. So you all been open source for five days? Two days at this point. Officially, perhaps. The initial open source commit was five days ago. Right. That's when we froze it.
24:13We froze the build. Gotcha. But you didn't actually hit the button in GitHub until two days ago. Exactly. All right, so we're both right. All right. We're both right. Exactly. He's a litigator. It's inconsequential. He needs these details to be clear, okay? Go continue, Jared. Well, I'm just curious. I mean, 23 ,000 stars, huge press, obviously, 1.1 thousand issues open. Interestingly, a lot of these seem like they're before that. So maybe a lot of these issues are using this internally. So we actually had the repository open for a long time before this. You didn't talk about it. Yeah, we used it as our public-facing, let's interact with the community.
24:52Okay, but the code wasn't there. Yes, exactly. So no code was available there, but it was, hey, are you having an issue? I was on the WSL team, we'd take a look and communicate with the community there. That's an interesting thing to point out, too, because there's this idea of obviously open source, we all get that. But then also the line between end user to development team making the thing is often so obscure that you don't even attempt it. And what you did was create a direct path. Like if you've got WSL thoughts, come say hi. Yeah, exactly. And we take a look. That's kind of cool. Even though it was an open source, you were doing open things.
Read the full transcript
25:27Yeah, exactly. And that was pretty awesome for us and really helpful. We got so many good community feedback and requests. And what's awesome is even before we open sourced, people were making projects for and with WSL. Some users would take a look at our code when we make updates and be like, oh, they added the string of a feature that we hadn't announced. And then write a blog about how to go access and use that. Someone even wrote a fix with a private binary of how to use WSL with 64 cores and more. So we're really excited to open source now and finally be able to say, hey, okay, we know there's tons of excitement.
26:03Now you do have full access to really party with WSL. How do you parse out those contributions and decide which ones are good, bad, indifferent? Like, ah, we're going to take this idea and do it ourselves, or we're going to merge this in and give you credit. Or we're going to ignore this because it actually doesn't align with Microsoft's vision, et cetera. Yeah, it's a really good question. And something that's pretty difficult to do, I think, to kind of do that well, be respectful to the community, get good community contributions, but also have a clear vision and an understanding of the product.
26:37I think it comes down to very clearly having a mission statement and goal for WSL. I think people use it for a lot of different things and have their say, maybe I want it to work in this way, very specific to my scenario. But WSL at the end of the day is a way, it's for developer scenarios. it's for the ability to run Linux tools, you know, for development on Windows. And having that kind of front and center really helps guide us of, when we look at a contribution, is that helping that mission statement? Can we then give feedback and say, you know, if you change it in these ways, that would be better.
27:14We'll be able to contribute it or add it and merge it into the product. And so that's really our goal. Gotcha. So that helps guide your decision-making process. if you were to categorize or summarize if you were an llm and i said summarize these 1100 issues you know what i'm saying like he's got his thumb on this pulse oh my gosh i love it continue i'm sorry i was thinking about what are the kind of things that people are requesting or maybe even hitting up against like towards that mission like where are you and what kind of stuff is still in the way is there like you know 50 of our issues are this thing or 20 % or that thing.
27:53For sure. I would say it's a variety and it's changed over time. And so the 1100 issues that are open right now are just, you know, a lot of them are kind of feature requests of things we'd like to see. And it's definitely a variety of things. And there's so many more closed issues. Actually, I think we're at like maybe 10 ,000 or more. I can tell you, yes, 10 ,400. So I'm not picking on you by saying there's 1100 open. Right, right. Only 10%. Yeah, that's pretty good, right? And it's kind of a difficult question to summarize, but I would say the top issues that are on my mind for it are how do we improve our ability to use memory in WSL?
28:33How do we make it faster to access your files on Windows from WSL and vice versa? How do we improve the ability for your disk space to automatically expand and then shrink once you're done using it? How do we improve the ability for people who are building on top of or with WSL, like Docker Desktop, Podman Desktop, NVIDIA, and more? How do we empower those organizations and products to have an awesome Linux experience when using that? Let's say those are my kind of top of mind. Gotcha. Here's an example from what he's saying here, too. So an example of speed up the file system is, I'm just on Windows, Jared.
29:11I open up what is terminal. I think it's called PowerShell, right? Right. You open up PowerShell, and you go into your Ubuntu, which I always forget how to, so I have to just up arrow until I see WSL. But there's a way. Was it WSL dash dash? WSL.exe. We'll just land you right in there. Okay. So WSL.exe in this thing. And now you're in a shell that has R-Sync. And so you're running Windows. You're in a terminal, and you're running R-Sync. It's not going to take some files on this Windows machine because I've ran whatever through compression to put it into long-term storage or whatever. And I do that, and I run that command, which is a bash script, probably on that same Ubuntu image.
29:51And then I would rsync it over to the NAS on a Windows machine. That's badass. I mean, like, that's awesome, dude. Does that not, like, get you excited? I mean, it's cool. I mean, isn't that cool? It is cool. That's dope. I think so, too. All right. They've embraced Linux that well. Right. To enable, I mean, it's fast. It's so fast. Teach me about the file mappings. You know, how you're actually accomplishing that. The backslashes. Oh, yes. Play that song, Jason. Play that song. There's a place I'm driving towards, which is that I think backslashes are trash.
30:34I despise backslashes, okay? They disgust me. This is one of the primary reasons why I don't like Windows. It uses backslashes in its path names. Forward slashes are cool. I'm down with underscores. Hyphens are okay. The pipe character's fine. I'm even okay with the tilde and backticks. All good. But backslashes, get those dreadful characters out of my face before I slap someone. And I'm looking at you, PHP namespaces.
31:07Matt, do you have, have you thought of any good lyrics? any rhythms and rhymes. For the backslash, this song could be called Backslashes are the Worst. It could be like Backslash You Disgust Me. I would just call it Backslash. By Matt Reier.
31:32I don't mind ash. I don't even mind bash. I like cashing and cash And I'll clash with a dash and a flash, man I'm not gonna say gash I don't even mind hash I'm out on the lash, man I got a rash Oh my gosh, man I'm gonna smash your face And if you backslash me, that's trash Backslash is a trash Backslash is a trash Backslash is a trash Don't say forward slash Just say Slash Just say slash Just say slash No need to say the forward bit Just say slash Do-de-doo, do-de-doo, do-de-doo, do-de-doo, do-de-doo. Are you a forward slash only? I'm a forward slash purist. We've arrived. I was going to bring this up with the advanced settings.
32:50I was like, this could be an advanced setting. Please, I know this runs deep in the file system, but please, let's use forward slashes in my Windows. So eventually we'll get there. But how does the, so if I hit WSL.axe, I'm dropped into Ubuntu. Yep. Where am I in my file system? So you start in your Linux file system. Right. So I'm like at the root or my home drive or something. Your home drive, right? So if you do PWD, you're like at home slash Craig would be mine. If I'm in yours, it's weird, man. This is not my directory. Yeah, why is the name wrong? But if you start there, that gives you the best performance.
33:25That's why we start you there. Because obviously Linux binaries to Linux files gives you the best perf. But you can go to the Windows file system. So if you go to cd slash mount, you'll find all your drives. So cd forward slash, your favorite. Okay. Yeah. So your C directory is mounted in your slash mount. Exactly. Gotcha. And so you can go to mount C, then you can access your whole Windows files from there. And that's what you're doing with your rsync. Right. And you can have all your Linux. I nodded to the audience. I nodded to Jared when he leaned over and asked me that question. Continue, Craig.
33:59Thank you. So you can have your forward slashes and go fully, go through your C drive. You can run bash scripts on your C drive. You can run whatever Linux commands you want, like rsync, totally accessing everything. And what's cool is all of that is done through your Windows user access. So behind the scenes, we actually have a file server that we set up. It uses a protocol called Plan 9, P9 protocol. And we have a file server set up both in Linux and on Windows to serve their files to each other. So wherever you are, there's some people who prefer backslashes. Right. You can go access the Linux files with backslashes and go edit all that.
34:36You can open stuff with notepad.exe and access the files from there. And so if I launch notepad.exe and I go file open, is that how it works? I don't know. Yes. Sounds right. I can confirm that. Yes. He's an expert. Yes. I'm still learning, so I don't know. How would I navigate to my Etsy directory in Ubuntu to edit a config file or something? So you could go file open in Notepad. And then in File Explorer, we have a Linux section. So on the left side of File Explorer, there's all that quick access menu ribbon for like my computer, things like that network. Craig's computer. Yeah, Craig's computer if you're on my computer.
35:17Yeah, get on Craig's home drive, yeah. And at the bottom, we've added a Linux logo when WSEL is installed. You can click that, and then you can find all of your Linux distros there. So I would click Linux, Ubuntu, slash, et cetera. And then I would be able to access all my config from that. Do those files exist when WSL.exe is not running, or do they only exist when it's running? They do exist when WSL is not running. But the top-level folder will exist. When you open that, we spin up the WSL VM so we can serve it to you. Pretty seamless, then. Right. And kind of my favorite part. It's so well baked in.
35:52That's what I was thinking. It's so well baked into Windows. I love it. Right. And that's kind of been our goal of we want it to feel like one machine. And kind of, you know, there are folks who prefer backslashes, folks who prefer frontlashes. I keep saying this. You can use either or, right? Yeah. Some would say neither. Only the one. Only the one. Sorry. And like some people prefer GUI, like their editor, they run it fully in Linux, right? They run a Linux editor from WSL. And I'm a VS Code fan, and I love Vim. So I have Vim bindings in VS Code, and I run everything that connects to WSL. So it's the Windows UI with Linux backend in VS Code.
36:34That's how I set it up, which is pretty awesome. Okay. I mean, it really is cool. I love that. Now, you can run the same thing inside of Linux, like VS Code on Linux, right? Yes. But it's just more native, I guess, with Windows. Totally. And even if I'm, because I'm pulling up stuff on Windows projects as well, all my extensions are saved, all my settings are saved across it. So it's. Why not just rock Vim directly? You know, I like VS Code. All right. I like the Shift-Control-P command palette. Sure. You've got to have your co-pilot up in there. Yeah. That's right. All right. Very cool. It's dope, man.
37:12I love it. Okay. So if someone's out there listening, they're like, you know what? I'm a Mac user. Yeah. This stuff sounds kind of cool. What's a good path to like, you know, obviously go buy a machine you can run Windows on. But let's assume they have a machine. They can run Windows. They have to get the thing. Let's assume they could do all that bootable stuff. They've installed Windows for the first time. It's booted up. They've logged in. Take us from there. What do you do? What you need to do is go open up command prompt or PowerShell. Just type in WSL space dash dash install. It will start installing everything.
37:46You hit yes to elevate. You're probably going to have to restart. And then you will get full access to Ubuntu. And we actually pop up an out-of-box experience, or an Ubi, if you will, which gives an overview of all the different features that we have in WSL. So a lot of the things I talked about today, like GUI apps, ability to access files, we explain, hey, this is how that all works. You'll get that. And that has links to our documentation. So it all has a learn more link. and if you want to get playing around with it, you can go to the terminal and just use it as you want. If you want to learn more, you can go right to the dock straight from there.
38:21So that's what I'd recommend. Okay. I missed that beautiful boot thing, whatever you're talking about there. I missed that. You didn't get the Ubi? You didn't get the Ubi? I don't think so. Okay, let me know. File a bug, github.com. Let's assume I did and I canceled it because I was too excited just to play with a toy. I don't like the bother me before I go play thing, so I don't know if it's a bother me before I go play thing. You want a wizard, though. Yeah, I do want a wizard, but I want to get started, but I want to be able to recall it. So maybe make it more easily recalled. It's in the help menu.
38:48It's in the help menu? Yeah, like remind me later, hey, there's still this cool walkthrough. Okay, I'll be the physical reminder for it. If you go to start and then type in WSL settings, there's a settings UI on how to control everything in WSL. There's that welcome to WSL bottom left, and you can click it and check it out again. Craig is our own personal Ubi. Ubi, LLM You're all things to all of us Thank you so much for explaining that to us I think it's so cool I'm a fan Thank you for having me Well friends, it's all about faster builds Teams with faster builds Ship faster and win over the competition It's just science And I'm here with Kyle Galbraith Co-founder and CEO of Depot Okay, so Kyle, based on the premise That most teams want faster builds That's probably a truth.
39:40If they're using CI providers with their stock configuration or GitHub actions, are they wrong? Are they not getting the fastest builds possible? I would take it a step further and say if you're using any CI provider with just the basic things that they give you, which is if you think about a CI provider, it is in essence a lowest common denominator generic VM. And then you're left to your own devices to essentially configure that VM and configure your build pipeline. effectively pushing down to you, the developer, the responsibility of optimizing and making those builds fast. Making them fast, making them secure, making them cost effective, like all pushed down to you.
40:18The problem with modern day CI providers is there's still a set of features, a set of capabilities that a CI provider could give a developer that makes their builds more performant out of the box, makes their builds more cost effective out of the box and more secure out of the box. I think a lot of folks adopt GitHub Actions for its ease of implementation and being close to where their source code already lives inside of GitHub. And they do care about build performance and they do put in the work to optimize those builds. But fundamentally, CI providers today don't prioritize performance. Performance is not a top-level entity inside of generic CI providers.
40:59Yes. Okay, friends. Save your time, get faster builds with Depot, Docker builds, faster GitHub action runners, and distributed remote caching for Bazel, Go, Gradle, Turbo Repo, and more. Depot is on a mission to give you back your dev time and help you get faster build times with a one-line code change. Learn more at depot.dev. Get started with a seven-day free trial. No credit card required. Again, depot.dev.
41:33We also had the opportunity to sit down with Mads Torgerson, lead designer for the C-sharp programming language. Here's Mads. Mads, how is your last name pronounced? Torgerson. Torgerson. The most American way you can imagine. That's how I do it in American. How would you do it, not in American? In Denmark, I'm Mess Torgerson. They just ignore the D altogether. They ignore the D and many other sounds. Mess. Mess? Yeah. Like you made a mess? Like a mess hall. It's a little more of an A sound to it. Like the mess. Mess. Mess. So no D sound. No D sound. And then the last name was what? Oh, man. Toruson.
42:15No Gs. The G's in there, but it's very faint. It's like a little W sound. Toruson. Toruson. Toruson. You must be upset then. How long have you been hearing people say it wrong? 20 years. Everybody's calling you mad. You know, I'll take it. Yeah? Yeah. Are you upset right now? No. Okay, good. I think Mads is one of the coolest names out there. You know, just roll with it. I actually, you know, it gives you extra leeway in life, you know? I don't even know what you do here, but I love your name. I'm just kidding. I know what you do here. It works. And is your title Principal Architect? Is that your title?
42:49Yeah. And you lead the C Sharp language? Is that? Yeah, I lead the language design. I'm the lead designer of C Sharp. Lead designer. I just want to get it right. That's all. Yeah. Cool. That's a money title right there. Yeah, it's a good job. It's kind of nice, yeah. What's it like being in your shoes? A little tight, honestly, after three days. Three days on the conference floor. It's one of these good types, huh? Mr. Literal. Love it, love it. All right, well, we're here with Mads Torgerson, the lead designer of C Sharp. Anders Halberg started it, right? He did. And then he handed it off to you.
43:27He handed it off to me. How long ago was that? About a decade, I want to say. I think TypeScript just had its 10-year anniversary. That was when. So TypeScript became his new thing and C Sharp became your new thing. Yeah. We did C Sharp. It was already my thing to a degree. I worked with Anders for my first 10 years or so here. Then we were totally rebuilding the C Sharp compiler as an open source in C Sharp implementation. self-hosted. And so we were kind of asked to not do too much language design because people were busy re-implementing all the features we already had. And Anders and I went and did TypeScript with the JavaScript team.
44:12And then someone had to go back and that was me. So I came back to C-Sheriff and Anders was gone and I was in charge. How did you feel about that comeback moment? Daunting was the main emotion. I was like, whoa. Talking about what does it feel to be in my shoes, I was, you know, Anders left some pretty big ones. Right. So it was fairly daunting to kind of take the helm there. But I had a lot of early guidance also from Anders. He was still around, right? So kind of grew with it little by little. What are some of the things you found challenging and delightful early on? like the initial hurdles you had to get over, then some of the ones were just like, you know what, this is really awesome to be in this position.
44:57Yeah, I mean, delightful is certainly like the collaboration when it works. We have a design team. It's a V team. It's people from all over, like mostly the developer division, but even outside of that, and even currently we have someone who's not even at Microsoft. Like we have a V team that designs C Sharp, and when that collaboration really rolls, that creativity there and, you know, when you just get something right because everyone pitches in and you get that synergy effect, that is just awesome. And the people working on it are great. I think the main challenge for me originally was actually not so much technical, but more about when consensus wasn't there, about kind of having to be the leader, stepping up and saying, okay, hey, guys, we're doing this, making progress and people disagree, handling those kinds of situations.
45:49As someone who's a little bit of a people pleaser like me, learning to kind of own the authority of being the lead designer. That took me some years, and that was a struggle for me. And when you do that, you end up owning the successes but also the failures, right? True, yeah. How do you make those calls? How do you make a design decision, whether large or small, like, oh, we're going to go this way? How do you ultimately make that call? Well, I will do almost anything to avoid making a dictatorial call. It is technically in my power to do so. Yeah. But I find that decisions that have a lot of consensus, a lot of buy-in, where people might disagree with the outcome, but they agree with the process that led to it.
46:33Like things were weighed, their points were adequately heard, that kind of thing. Those decisions tend to end up usually being really good. and to stick. You don't then get to the end of the production, shipping like a month from now, and then you realize, oh, this was a crap decision or something like that. So taking the effort up front to have that maybe a little more laborious process of getting everyone bought in and thinking through all the options, and that does tend to lead to good decisions. So that's what I try to do. But sometimes, you know, there is time pressure. You've got to make a call.
47:12and I will do it, but I'm uncomfortable with it, to be honest. Because they're sort of like, what if I'm wrong? Oh, sure. All those kind of doubts. So to give you my experience with C Sharp is probably 100 lines of code. I think I had a FinTech customer that I needed to extend an endpoint on our server-side thing in order to build a front-end thing. And I went into there and I had VS Code. Not VS Code, Visual Studio. and I took an existing endpoint and I said, it's kind of like this but different. I took that over there and I compiled it around and everything was great. That's my experience. You probably have less than that.
47:49Zero lines of code. Take us to C Sharp Landia as visitors here and maybe characterize the language and we'll talk about where it's going. Yeah, I mean, C Sharp has been on quite the journey in terms of where we see ourselves in the world. It started out as a Windows-only closed source, mainly for apps and a little bit of server stuff back when that was, you know, how you said that. And now it's open source, cross-platform, and general purpose used for vast numbers of things, not all of which Microsoft has a hand in, like gaming, for instance, with Unity and other platforms. It started out being, some would say, suspiciously similar to Java in some ways.
48:33It was sort of part of that same wave of object-oriented programming languages finally hitting the mainstream. It was always more, it was always a bigger language than Java. It would reach, it would sort of start at the same high abstraction level, but it would reach down further. C Sharp would have structs and even unsafe code from the outset to have like interrupt with C and with native code to have, you know, ways of having better performance than you would have when your only choice is objects and garbage collection, like it was in Java. So that's kind of how we started out. And in terms of the unsafe code, of course, it's still there.
49:14You can still do it. We've cleaned up our act a lot by filling out that kind of bottom abstraction layer of C Sharp with safer constructs that are more... You don't have pointer arithmetic in your code so much anymore. Less sharp edges. But we still like very much, we are very focused on performance and being one of the most high performance garbage collected languages out there. And we are focused on pretty aggressive language evolution to keep the language as modern and fresh as we can. You know, as the state of the art of programming languages moves along, both in terms of kind of syntactic lightness and ease and also just like the things we can do with them.
49:58Right. We do our best to be part of that. Sometimes we follow, sometimes we lead. But we try not to fall behind, even with 25 years of history, to not become like a legacy language. Yes. We want to be a really good choice for your next project, not just one that you have to use because your company is all invested. Right. So how do you personally track what's going on trend-wise? Do you look at other programming languages, burgeoning ones, ones that have interesting ideas, but they're niche? And do you think about where C Sharp can go from that great artist steal kind of direction? There's definitely a large element of that.
50:40Yeah, we do steal a lot. We do look at other programming languages. And if they have a nifty solution to something, yeah, we will totally steal it. sometimes we will take the time to make it a C Sharp feature, one that feels right for the language. We don't just say, oh, that looks nifty and then grab its syntax and all. We tend to make it our own. You'll see a lot of features from functional programming have made it into C Sharp and because they're coming into an object oriented kind of core philosophy, they do tend to take quite a lot of transformation to become, like, to retain that usefulness that they have in their original environment, but to feel natural in the context of C Sharp.
51:29So what languages are you looking around at? Maybe even you get Language Envy because they don't have the constraints you have with the backwards and the huge install base, right? Do you ever think, like, oh, it would be cool if we could do that? I mean, we look kind of all over the place. If you take some of the popular languages today, like, we will look. Actually, all the popular languages today seemed, or most of them seemed to have taken a thorough look at functional programming, even though there isn't a language you can say is a super popular functional programming language. But there's stuff like Scala that is somewhat popular in industry use.
52:04We all kind of look at that. Then we, you know, newer languages that have burst onto the scene for various reasons, like Swift, for instance, will definitely look at for, like they have some, they had really nifty things about patterns that we were inspired by. Look at something like Kotlin that they have a good flair for like handsome syntax. Sometimes we'll be inspired by that. Python is really big, especially with AI now, but also in general in terms of data processing and so on. The lack of strong typing in Python means that you can have some really elegant syntax sometimes for working with big data, for instance.
52:48And so we were a strongly typed language, but we still look to Python for, like, what are the things that people find really convenient? And can we do a thing that doesn't sacrifice the strong typing and the kind of reliability of working in that environment while being as nifty, you know? So either features directly that we were kind of inspired by Python for, like how they do indexing and ranges and so on. We stole a lot of that. Also, just the feel of it. It used to be that every collection type in C Sharp would kind of have its own syntax for how you would initialize, how you create a new one with some elements.
53:23And now we have collection expressions, which are a nice syntax that works across all the different collections, even your own. So we try to, yeah, we take a lot of that inspiration, but what we choose to take and not take, as well as many of our original ideas. It really comes from the need that we find in the developer community. We do the language design in the open as well in GitHub. We have a lot of community participation. We, of course, go to events like these. So the many ways that we just kind of keep tabs on what are the current C Sharp developers struggling with, what are the new C Sharp developers struggling with in terms of learning and getting into the language.
54:05and that's kind of what drives, that's where the motivation comes from and the set of problems we want to prioritize finding a solution for. And then sometimes the solution is, hey, let's steal it from Swift. And sometimes the solution is, hey, let's come up with something. One thing I appreciate about Swift is its ambitious scope, even from the outset of being like from your single, from your one, your command line scripting program all the way up to operating system level things. in terms of like, it can do it all. And I wonder what C Sharp's vision is. I mean, are people using it for scripting and stuff or is it just not that kind of language?
54:41They are, they are. There's even a scripting dialect of C Sharp. Although we're trying to kind of get just a regular C Sharp closer to that. C Sharp used to be, like as a member of that Java age club, it used to be fairly clunky in terms of syntax. Like declaring a virtual method and overriding and all that kind of stuff. It's a thing with a lot of keywords involved. Your program would be a main method that lives in a class. So you have five lines of code. A lot of ceremony. Yeah, before you even have, before you even have, before you're even printing Hello World. And a lot of that we cleaned up.
55:17Okay. Which makes it more scripty in a way and feel. We took away a lot of ceremony over the years. Made cleaner, briefer alternatives. It's like, why do you have to have all this here? Whenever people run up against a lot of boilerplate, that's when we think, okay, is there a way that we could just clean this up? And that's definitely inspired by a newer wave of programming languages and more scripting-like languages that are just more straightforward. You just sit down and you write, you know, Bright Line Hello World, and there it is. That's your program, right? So now you can do that in C Sharp as well.
55:57Very cool. What's some of the functional stuff that you've brought in over the years? So much. I want to say the first thing was generics, really. Like parametric polymorphism came in from functional languages to Java and C Sharp and other programming languages around the early 2000s, I guess. Lambda expression. We had a whole round of stealing. We did in C Sharp 3 when I first joined C Sharp almost 20 years ago. We had a very functionally inspired push for embracing querying as part of the programming language. We had a SQL-like syntax in C Sharp that boils down to using lambda expressions and code quoting and all kinds of things.
56:44I've seen some of that and it's really cool. It is very cool. Since then, I think some of the very impactful stuff we've adopted is pattern matching. So C-Shirt now has a very, very expressive pattern language, set of patterns for pattern matching. And it's very well integrated into what was already in the language. So that gives a whole new, like essentially it gives you a toolbox to rival classic optic oriented style of lots of virtual methods. when you're kind of coding from the outside. You maybe still have a type hierarchy, a bunch of different types. Sure. Pattern matching is just, you know, it gets very clunky if you don't have something like that and you want to have control structure that you can actually maintain and read and so on.
57:31Right. What level does the pattern matching come in, like at the function declaration level? Can you pattern match parameters and have multiple functions that fire off depending on what's coming in? No, we don't have pattern matching at the... We already have function overloading, which many functional languages don't. And for better or worse, overloading is in the language. And so it will probably be too, I don't know, never say never, but it might be too difficult to kind of also have a pattern matching approach to those overloads on top. But we do, at the statement and expression level, we have, essentially, we have match statements, which are just old switch expressions dressed up.
58:13and switch statements dressed up. And we also have switch expressions, which are the more functional expression-based way of doing it. Gotcha. Cool. Now, what about pipelining? Is that a thing that isn't C Sharp? Not in the classic sense, but we were, back then when we did the whole querying thing, we were very inspired by pipelining and functional programming languages. What we did instead is extension methods, which many other languages have picked up since then, where you... It's an example of kind of adapting something to a more object-oriented style. You put... Essentially, you put a method on an existing type from the outside, right?
58:59And the nice thing with that from an object-oriented point of view is you walk up to a value of that type, you press dot, and these extra methods show up, right? So you have the discoverability of, like, what can I do now? come not just from the members declared on the thing, but also that other people whose stuff you're importing put on there. So that's a really good architectural pattern, it turns out. And at the same time, you get that flow. Like you start with a value and you're piping it through various, maybe query methods, for instance. You wear, you select, you do all those things in a fluent style, just like you would do with pipelining in a functional language.
59:40and now, like almost two decades later, the next version of C Sharp will have not just extension methods, we will start adding extension properties and extension other kinds of member kinds to kind of capitalize more on that composability that extension methods give. Gotcha. How do you add all this stuff and then maintain backwards compatibility and performance? Sometimes it feels like backwards compatibility is, I spent half the time on that. How do you come up with a really good syntax that doesn't already mean something? It doesn't break everything. Yeah, or break something. We're fairly careful about breaking changes.
1:00:18We're probably getting a little more courageous as the years go by. But by and large, we don't obsolete things and we don't break things. That's sort of like a core principle because there's code that people are building and have been building for decades. And if all of a sudden we start breaking all of that, not so good. So it is hard. And I honestly would have thought we would run out of like just design space long ago. But somehow we keep being able to get creative. Sometimes there's a little bit of compiler trickery involved to kind of make sure things can coexist. And we are essentially we'd rather wait for the right thing than put something in that either breaks too much or doesn't have an optimal syntax.
1:01:09If you're like, we could have this beautiful syntax, but we can't because breaking changes, then we'd rather wait than put something inferior in. So we do try to keep, I think successfully, keep the quality bar really high for new features, how they feel, how they look, how intuitive they are. And somehow we're still able to do it. But it's honestly a bit of a mystery to me. How big is the team? It's very hard to count. I am the C Sharp language design team in terms of full-time work. There's a C Sharp language design V team that is about 10, 11 people that meet every week and where all the decisions are made.
1:01:54There's a compiler team of a little over a handful of people that built the understanding of the language. There are people on the tooling team that build things for VS and VS Code, have suggestions and refactorings and all of those things on top as well. There are the people who are like, oh, there are these new features. Would you like me to turn your code into those? Then there are people building the.NET runtime that it all runs on and the libraries. And so when you start adding it up, I'm sure we'll get closer to 100. Depending on how you count. So at the keynote on Monday, agentic was the word of the day.
1:02:44And I wonder sometimes how far into an ecosystem that kind of a trend permeates. And I imagine as it goes down, it eventually reaches languages. And I wonder, I mean, I don't know if that's true or not, kind of teeing that up is like, are new C-sharp language features considering some sort of tooling or AI-related things? Like, is that reaching itself in the language design? Or is that just like, well, we can just ignore that stuff and then do it at a higher level? We certainly can't ignore it. That would be at our peril, right? So far, I think there's a little bit of a... I mean, there's certainly our tooling is just completely infused with AI already.
1:03:31You work with C Sharp in Visual Studio, Visual Studio Code. Copilot is all over the place. And being very helpful, more and more so. That's a really rapid development. So certainly there, of course. Then there's sort of a couple of other questions we have to take into account for the language design itself. One is, I think, a little bit of a red herring, but it came up sort of in the beginning of LLMs bursting on the broad market. is should languages be designed for AIs to be able to better train or better predict or something like that? Is there something about programming languages that make them harder or easier for AIs to work with?
1:04:14Yes. That, I think, is largely... I think we're already kind of past that. I think that's just as the models get bigger, they can figure it out. The models can work in whichever programming language you throw at them. The main thing they rely on is there being vast code bases out there to learn from. Samples and documentation, right? Yeah. So they're fine. But people did, like, a year ago at Build, that's the kind of question people would ask a lot. Nowadays, I think there's a little bit, as you build, like you mentioned Agentech, as you build architectures where, you know, agents talk to each other.
1:04:50Maybe you do that programmatically. You put agents together and so on. and there's an interesting question about how do you do the, that sort of form of, thinking of it as a form of distributed programming. What are good architectures for that and how do they influence the language? One thing that's come up is that C Sharp doesn't have any notion of union types in it and those are actually kind of helpful for some of those architectures. Also sometimes for AIs to be like, I know it's either this or that, like union types where it's either an int or a string, you know, that kind of thing. C-Sharp doesn't really have a way to express that intent at the language level.
1:05:28Gotcha. It doesn't really matter what it is, but if we had, then I think that would both help at the sort of architectural level and also that intent is evident not just to other programmers, but also to AI reading and helping you maintain the code. So there's a little bit there with an expressiveness that we are now kind of, we're at the drawing board figuring out, okay, and honestly, we've been thinking about union types for a while, haven't really had like the killer scenarios to say, okay, we should go this way on them. There's big design space. And I think this is the one that is kind of driving us to be like, okay, we should have union types in C Sharp and we should get them in.
1:06:10Interesting. Yeah, get a wiggle on. There you go. Yeah, that's interesting. It's like you have all these potential users and use cases and you're weighing those against all the hurdles and the potential drawbacks of a feature. And it's like you're just adding a new set of potential users. It's like, well, we have our human users, and they've been asking for it, but it hasn't necessarily percolated up as being so important that we have to build it. And then we have these AI tools. These agents will be coding with it. And is this because they tend to use union types in other languages a lot? Yeah, sometimes you see that.
1:06:46For instance, and it's not just programming languages. If you look at something like, just look at JSON. So much data is in JSON. And if you look at JSON schema, well, you can express a union type. And so since it's a big data exchange type, a data exchange format, being able to express that union type in the languages that consume it means you can have a more faithful mapping from the JSON to whatever is the native representation of it in the language. That's true even without AI being involved. But when AI is also involved, then there's that extra bit of, can we express that intent faithfully when it's present in the data?
1:07:28Yeah, it's a thing that I think will be a good fit in C-sharp, but it's definitely, it's both getting its priority boosted by the AI scenarios. And that also gives us another set of concrete scenarios to help drive the design. You don't want to design a language feature in a vacuum. You want to have people ready to use it so that you can use their designs to make the right decisions. Interesting. This may bring us back to last year's conversation about the thing that you said people were probably talking about last year. One thing that we're seeing and other people are seeing is in the world of, I guess it's sort of in the vibe coding world and beyond.
1:08:09Imagine vibe coding a few years from now, not right now. The tools that people are using are making a lot of the choices for them. Yeah. And we're seeing where software services now are actually being skyrocketed in their usage, not because a human decided to use them, but because a VibeCode tool decided to use them. Insert your tool here. And so software as a service providers are starting to think like maybe we're actually optimizing for the wrong audience because it's a lot easier to convince one of these things. and it's going to use us a thousand times, especially as we get more and more distanced from the code itself.
1:08:48Right now we have to look at all the output, but you assume that maybe at a certain point we look less and less and less, and I don't care what services it's using. Maybe I don't care what programming language it's using underneath the hood either. And so I wonder if there's a world wherein the AI agents are actually making programming language choice, just like a project manager might say, well, we're going to use C Sharp for this. Have you considered anything like that? I don't know if that necessarily drives design, but it's just an interesting phenomenon that might happen. It is interesting.
1:09:19You make a really good point that there's sort of a... It's almost like search engine optimization. It is, yeah. You want to try to look sexy, too. You want to kind of just poke up above the rest so that all the AIs will pick you, and it's a huge multiplier if you can get them to do that. So you're sort of competing for their attention, if you will. That's a really interesting situation. I think, yeah, from a design point of view, I think that it's probably more of a how much code is already there situation in that language rather than, like, it will start out by what do people use when they do this?
1:10:01That's because ultimately the models we have now are informed by what people have done. Right. But as there's more and more code that's actually vibe-coded, there will be these self-sustaining, self-reinforcing loops maybe where... Yeah, it might start to eat its own tail. And that's been one of the concerns with generative AI in general is the more that it generates, the more that you're now consuming your own generated content. Just like the movie Multiplicity. He got dumber and dumber and dumber every time he multiplied himself. Right. Yeah, there's definitely a risk there. And I think when you think about the role programming languages play there, they're sort of like AI is non-deterministic, right?
1:10:44Programming languages, programming is where determinism comes in again. Like that's a, like, so when you, I mean, many, this is true, many people say that instead of asking AI to solve your problem, ask it to write a program to solve your problem. because then that program is deterministic and you can like, it has predictable behavior. It gets the math right each time. Yeah. So really programming languages to some degree are the other side of the coin. That's true. Or they're the face of that other side of the coin, if you will. Like they're the face of the programming, the deterministic factor.
1:11:17And I think a lot of how software is going to develop is in how the interaction works between the LLM. What's the division of labor? how dynamic can that be and how how good can we get at having the using the right thing for the for the right job like okay now i need an ai because i need that kind of open open world thinking i need to understand and and get a grip on something that is that is big or nebulous or whatever, AI for that. Now I need something that runs a million times a day and that is trusted and serviceable and so on. That's a program. But the AI might have helped write the program and the program might have helped inform the AIs.
1:12:09So that interaction is really sort of like a very interesting field to watch those couple years into the future, as you say. Yes. And where those themes are specifically. Yeah. I think that's going to evolve a ton. over the next couple years. So as a programming language designer, maybe you're thinking, well, how can I be the best tool to do the programmatic side of this LM interaction, maybe? Well, maybe not. I mean, you've got a huge programming language already. I honestly think... I think we have a fine tool for that. Like, at the language level... Yeah. You can do all the things. We're good.
1:12:43Yeah, I mean, the... An interesting thing, like, some people say, like, Eventually, the AIs won't even produce high-level programs. They will just generate machine code, because why not let them do all the stops? But I actually think the high-level programming languages are super useful for the AIs to do the right thing, because there's so much intent expressed in a high-level programming language. The kind of expressiveness, I think, really helps drive... It helps the AI kind of discern what's going on. So I think high-level programming languages are here to stay. And the interaction between natural language and high-level programming languages, I think is very, I believe, really helps AIs train well, get good at stuff.
1:13:43That's my belief. Do you think there's a higher level that isn't quite plain prose or English or whatever your language is, but's higher than your current highest level languages, where it's almost like pseudocode with slightly more formalized? That would be like a new language, perhaps, or a layer on top of C sharp. I don't know what it is. That's like, actually, this is optimal. This is the balance between what the machine needs and what the human actually wants to write. Or do we just go straight to English and just let them figure it out? Well, the thing about programming languages right now is that, I mean, they're deterministic in English, it's not.
1:14:22They have clear semantics in English, it's not. That doesn't mean that they're as high level as they can be. Like, certainly a lot of the evolution of C Sharp over these past 20 years has been about having a more declarative and less imperative way to express things. Like, you express your intent rather than, like, what you want rather than how to do it. And by no means do I think that evolution has stopped. Like we'll keep finding better ways to say less and get the right thing. Right. While still deterministic. So in that sense, yes. And I think that will be actually fine with the AIs. They'll be like, awesome.
1:15:01They just told me what they're trying to achieve. I don't have to look at their for loop and they're like, I get what they're trying to do because they're telling me directly. I don't have to infer it. I don't have to say, you know, is it this or is it that? So expression of intent, the more code kind of captures that, the better a bridge it is. The better it is for both humans and AIs. Right. So imagine something like that coming out of Microsoft. Would that be like a skunkworks project that some engineer just does on their own and then pitches it to somebody? Or would that be like a thing where, I don't know who your boss is, Mads, but your boss comes and says.
1:15:38Or somebody comes to Anders and like, hey Anders, we want this new language. How would that even come out of Microsoft? I think we had never expected C Sharp to last this long and still be rocking. It's still so in its prime, still growing. If you'd asked me a few years after I joined, I would say, yeah, C Sharp will have maybe. If we were lucky, it has a decade of cool growth, and then it's like a legacy. But I think it's not so much that another language will come in that's inherently higher level. I think it is that the languages will continue the race that we were already in before AI became a factor to raise the level of abstraction, push it upwards, become more powerful and expressive.
1:16:29Maybe AI's can help us do that. But I think, I believe it's more likely to happen as an incremental process with the existing languages than it is for some language to burst on the scene that is like, oh, it's so high level. The AIs are going to love it even though there's no code yet for them to train on. People are going to love it even though they have all this install base of stuff. That just seems unlikely to me. But never say never. But it's much more likely that it comes from organic growth and just incremental improvement and raising the level of abstraction. Yeah. I want to agree. I agree.
1:17:05I think that that's perhaps, I don't know if it's a shame, but it seems that it's probably harder than ever to start a programming language. I think so. For that reason. Yeah. And interesting ideas come a lot from a fresh start. Yeah. Because you can't, you know, you have to have a new viewpoint perhaps or a new set of primitives or a new mission. I'm going to start with this in mind. Yeah. And start with just blank slate versus being like, yeah, but we have hundreds of thousands of people using it this way. Right. And if that language can't get a foothold, then how does it even influence languages like C Sharp?
1:17:42It's like, oh, let's think about this differently. Yeah. Even if you look at the top 10 programming language by usage, whichever ranking system you want to look at, you look at the last 10 years versus the previous 10 years versus the previous 10 years before that, the churn in the top 10 becomes less and less. So there's already been these effects in place just because there's so much software. Like network effects. Network effects or something like that. It's harder and harder to break into the programming language market. You need to really like, you need to be connected to some new value prop as you said.
1:18:20Like you look at a language like Go, it had its connection to Kubernetes and that whole world of containers. Right. That really was the scenario, new novel scenario that it could piggyback onto the stage. That's kind of how you can break in, right? Right. It's not on its own qualities, though they are probably involved in why it was used for those things. Sure. It's really that you managed to piggyback something. We talked about Swift before. It was Apple's anointed replacement of Objective-C. Right. That helps. So they have a whole ecosystem just waiting for them. They just need to make sure that they can transition them with the carrot and the stick until they got them.
1:19:07And that seems to be the only way things are really making it in nowadays in terms of programming language. And it's probably just getting worse and worse. Just because it's now no longer just the installed base. It's also what the AI is trained on. Yeah, exactly. So, yeah, it's really, it's a shame in a way. I love new programming languages and new programming ideas. Yes. But I am not super optimistic about having like revolutions in that space, to be honest. Well, what are you optimistic about? What am I optimistic about? Nice transition. Thank you. Nice transition. You know, I am optimistic about many things in my life.
1:19:55If we want to keep it programming language oriented. Take it wherever you want. There is a lot of innovation in the space. It's just that it's going into niches or existing programming languages rather than new languages all the time. That innovation keeps exciting me and I think it keeps solving new problems. I think, obviously, for all the worry that people have about AI, I think it's going to, I'm sure they're going to be problems we haven't even thought of yet that we're going to have to deal with as it makes more and more of an impact on how software is built. There'll be, you know, there'll be headlines that are AI did this or AI did that and, you know, bad things happen.
1:20:37Sure. but by and large when we find that balance we talked about before or as we get to it and maintain it through all the all the twists and turns that we'll have I think the world is going to have really really good software that's my I'm optimistic about that take us outside the world of programming what else are you optimistic about what else are you into what interests you well as a as a person yeah I'm I have four kids okay they're all in their 20s now nice so my life the last nearly 30 years outside of of work has been a lot about having a family doing things traveling we're both in the trenches currently we don't have any kids in their 20s we both have kids yeah in their speak for yourself oh that's true So I'm fairly new as an empty nester with my wife.
1:21:40Looking forward to grandkids? Looking forward, definitely. Yeah. I love the idea of being a granddad. I'm also very supportive of my kids taking their time. Those are big decisions. I know we rushed into them a little when we were young. Sure. But obviously, that'll be great. four kids is not one too many. I've loved being a parent for all this time. But it is kind of an interesting turning point in my life and in our life to be like, okay, what's the day-to-day? What can we now do? Right. The empty nest. The empty nest. What are you finding? Well, for starters, we are going to travel a lot. We both have the opportunity to take some extra time off in the fall, and we're going to spend a couple of months in Europe.
1:22:31We're both from Europe originally, don't get to go there a lot and it's rushed when we do. Just go spend a bunch of time. I think travel is going to be fairly big. Yeah. That sounds amazing. We still have... Our youngest is seven. Oldest is 17. So we're in the range where we're starting to get some freedoms back. You know, no diapers, no naps. It's easier to go places as a family. One can babysit the other, that kind of thing. That's huge, actually. Being able to go out on a date without having to arrange a babysitter was like a threshold moment for us. Getting dates back. I remember that as like a revelation.
1:23:05You forget what you missed. Oh, my God. It's such a guilty pleasure almost. You're like, wow. Should we like, should we actually just go shopping on our date just because we can do it without the kids? Right. Yeah, that was a big moment for us. But still traveling with the family. Yes. Harder to travel, you know, just us two. Yeah. We still travel a lot with the family. It's home with both. Yeah. Hard to travel with and hard to travel without. Yeah. Yeah, exactly. Yeah, both are challenges at that age. They're uniquely challenging. Like, one, you miss them, and then when you're like, I want to miss you.
1:23:44You got to get away. No comment. I love my children so much. Sometimes you have to get away to miss them. It's just hard to keep in mind that you are a full person when you have. Yeah. Because you're so focused on them. I'm learning to be a patient dad, too. So this is also a learning moment for me to be more patient. Oh, sure. Yeah. It's so hard. It is really hard. It's just emotionally straining. I always tell my oldest, being a dada is hard. That's my phrase to him. Anytime I mess up or like I got to go back and say, you know what? That wasn't too good there. Yeah. You know, because you got to show kids that you're sorry in those moments too.
1:24:22And you can mess up. I was like, being a dada is hard, buddy. It is. You know, it's so complex and so nuanced that you just can't share what you've got to do as a dad to your son who's nine. But he can get some of it, you know. Yeah. Yeah, and of course you don't want to make it their problem. But I think being put in those situations, like stressful. Well, if not, he judges you. He would judge you. Absolutely, yeah. He'd make his own judgments. If you don't share that moment with him, you know, and share the perspectives of why things are the way they are, how they worked out, the way they worked out, whatever the scenario might be.
1:24:54It's important to be. If you have that grounding in a relationship, I feel like that's better than like assuming, you know, like. Right. You've figured out on your own kid. You have to find a way to be vulnerable and sharing and being a person. Yeah. Otherwise, you know, you kind of. You shape them. Yeah. Yeah, you do. But, I mean, somehow I find coming out on the other side after 28 years of having kids at home. I've learned so much. Oh, yeah. Like, I feel like I understand so many things so much better, and I have so many interpersonal skills and so much more empathy that I think I can attribute to the learning that all those hard moments and tough situations kind of accumulate.
1:25:45It might make you a better design lead of a language, even. It's quite possible. I'll let others weigh in on that. I'm probably not the best to say. Personally, I think I'm awesome, but you know. Somebody else may ask him much. We'll ask around. Well, I thought that when I was young as well. I just wasn't right about it. Well, as part of this interview, we have to have three references. That's right. So we can go and talk to them afterwards. How awesome is he? That's right. Three references to other people? He's just messing around with you. Is he? Okay. I was totally ready. He's like, okay. He's on the list.
1:26:21Yeah, yeah. Totally. I'll give you named as long as you leave me alone. Do you have any letters of recommendation you can provide? No, this has been fun. Very interesting stuff. Awesome talking. Thanks for sharing it with us. Great pleasure. Hope you keep having fun at Build. Always. Love Build.
1:26:40Okay, that's Changelog for this week. Thanks for hanging with us at Build. Changelog++ members, stick around for a bonus segment with Adam and Craig talking about building custom PCs. Change log plus plus. It's better. We do have one more interview from the event coming out next week. It's Amanda Silver, corporate vice president for Microsoft's developer division. That's a good one. Also, we have some big news coming next week about our live in-person Kaizen slash Pipely launch show in Denver. It is happening. All the details and tickets go on sale next week. Thanks once again to our partners at Fly.io and to our sponsors of this episode.
1:27:20heroku.com and depot.dev. Thanks also to Breakmaster Cylinder for these dope beats. Next week on the Changelog, news on Monday, Amanda Silver on Wednesday, and Adam and I discuss the news on Friday. Have a great weekend, share the Changelog with your friends to help out the show, and let's talk again real soon.
From the publisher
We bring you back to Microsoft Build 2025 to nerd out with Craig Loewen on Windows Subsystem for Linux and Mads Torgersen on leading the design of C#.

