Inspiring the Next Generation of Devs on TikTok with Scott Hanselman

Scott Hanselman is a partner program manager at Microsoft, where he’s worked for nearly 14 years. Scott brings more than 30 years of tech expertise to Microsoft. Prior to this role, he worked as the chief architect at Corillian, an adjunct professor at the Oregon Institute of Technology, and a consultant for e-commerce sites. He’s also the host of the Hanselminutes podcast. Join Corey and Scott as they talk about how Scott is selling enthusiasm around free and open source software to empower the next generation of programmers, how technology can help you escape a suboptimal position in life, moving a blog that was hosted on a Windows Server 2008 server to Azure, using TikTok to encourage younger folks to get into coding, why there isn’t a wrong programming language to learn and why you should learn JavaScript, how the rise of SaaS and cloud computing has made Microsoft a “simpler” company, convincing banks to use open source in the 2000s, and more.

Transcript

Announcer: Hello, and welcome to Screaming in the Cloud with your host, Chief Cloud Economist at The Duckbill Group, Corey Quinn. This weekly show features conversations with people doing interesting work in the world of cloud, thoughtful commentary on the state of the technical world, and ridiculous titles for which Corey refuses to apologize. This is Screaming in the Cloud.

Corey: This episode is sponsored in part by Thinkst. This is going to take a minute to explain, so bear with me. I linked against an early version of their tool, canarytokens.org in the very early days of my newsletter, and what it does is relatively simple and straightforward. It winds up embedding credentials, files, that sort of thing in various parts of your environment, wherever you want to; it gives you fake AWS API credentials, for example. And the only thing that these things do is alert you whenever someone attempts to use those things. It’s an awesome approach. I’ve used something similar for years. Check them out. But wait, there’s more. They also have an enterprise option that you should be very much aware of canary.tools. You can take a look at this, but what it does is it provides an enterprise approach to drive these things throughout your entire environment. You can get a physical device that hangs out on your network and impersonates whatever you want to. When it gets Nmap scanned, or someone attempts to log into it, or access files on it, you get instant alerts. It’s awesome. If you don’t do something like this, you’re likely to find out that you’ve gotten breached, the hard way. Take a look at this. It’s one of those few things that I look at and say, “Wow, that is an amazing idea. I love it.” That’s canarytokens.org and canary.tools. The first one is free. The second one is enterprise-y. Take a look. I’m a big fan of this. More from them in the coming weeks.

Corey: This episode is sponsored in part by our friends at Lumigo. If you’ve built anything from serverless, you know that if there’s one thing that can be said universally about these applications, it’s that it turns every outage into a murder mystery. Lumigo helps make sense of all of the various functions that wind up tying together to build applications. It offers one-click distributed tracing so you can effortlessly find and fix issues in your serverless and microservices environment. You’ve created more problems for yourself; make one of them go away. To learn more, visit lumigo.io.

Corey: Welcome to Screaming in the Cloud. I’m Corey Quinn. I’m joined this week by Scott Hanselman of Microsoft. He calls himself a partner program manager—or is called a partner program manager. But that feels like it’s barely scraping the surface of who and what he is. Scott, thank you for joining me.

Scott: [laugh]. Thank you for the introduction. I think my boss calls me that. It’s just one of those HR titles; it doesn’t really mean—you know, ‘program manager,’ what does it even mean?

Corey: I figure it means you do an awful lot of programming. One of the hardest questions is, you start doing different things—and Lord knows you do a lot of them—is that awful question that you wind up getting at cocktail parties of, “So, what is it you do exactly?” How do you answer that?

Scott: Yeah, it’s almost like, if you spent any time on Clubhouse recently, there was a wonderful comedian named Spunky Brewster on Instagram who had a whole thing where she talked about the introductions at the beginning of a Clubhouse thing, where it’s like, you’re a multi-hyphenate sandwich artist slash skydiver slash programmers slash whatever. One doesn’t want to get too full of one’s selves. I would say that I have for the last 30 years been a teacher and a professional enthusiast around computing and getting people excited about computing. And everything that I do, whether it be writing software, shipping software, or building community, hangs off of the fact that I’m an enthusiastic teacher.

Corey: You really are. And you’re also very hard to pin down. I mean, it’s pretty clear to basically the worst half of the internet, that you’re clearly a shill. The problem is defining exactly what you’re a shill for. You’re obviously paid by Microsoft, so clearly you push them well beyond the point when it would make sense to.

You have a podcast that has been on for over 800 episodes—which puts this one to shame—called Hanselminutes, and that is, of course, something where you’re shilling for your own podcast. You’ve recently started on TikTok, which I can only assume is what the kids are into these days. You’re involved in so many different things and taking so many different positions, that it’s very hard to pin down what is the stuff you’re passionate about.

Scott: I’m going to gently push back and say—

Corey: Please do.

Scott: That if one were to care to look at it holistically, I am selling enthusiasm around free and open-source software on primarily the Windows platform that I’m excited about, and I am selling empowerment for the next generation of people who want to do computing. Before I went to Microsoft, my blog and my podcast existed, and I was consistent in my, “Hey, have you heard the news?” Message to anyone who would listen. And I taught at both Portland Community College and Oregon Institute of Technology, teaching web services and history of the web and C# and all that kind of stuff. So, I’m one of those people where if you touch on a topic that I’m interested in, I’ll be like, “Oh, my goodness, let’s”—and I’ll just like, you know, knock everything off the desk and I’m going to be like, “Okay, let’s build a model, a working model of the solar system here, now. The orange is the sun.”

And it’s like, suddenly now we’re talking about science, like Hank Green or whatever. My family will ask me, “Why isn’t the remote control working?” And then I’ve taken it apart and I’m explaining to them how the infrared LED inside works. And, you know, how can you not be excited about all these things? And that’s my whole thing about computing and the power that being able to program computers represents to me.

Corey: I would agree with that. I’d say that one thing that is universal about everything you’re involved in is the expression I heard that I love and am going to recapture has been, “Sending the elevator back down.”

Scott: Oh, yeah. Throwing ladders, ropes, elevators. I am very blessed to have made it out of my neighborhood, and I am very hopeful that anyone who is in a situation that they do not want to be in could potentially use coding, programming, IT, computing as the great equalizer and that I can I could somehow lend my privilege to them to get the things done and solve the problems that they want to solve with computers.

Corey: I’m sure that you’ve been asked ad nauseum about—you work in free and open-source software. You’ve been an advocate for this, effectively, for your entire career; did no one tell you you work at Microsoft? But that’s old Microsoft in many respects. That’s something that we’ve covered with a bunch of different guests previously from Microsoft, and it’s honestly a little—it’s becoming a bit of a tired trope. It was a really interesting conversation a few years back that, oh, it’s clearly all just for show.

Well, that is less and less obvious, and more tired and frankly bad take as time progresses. So, I want to go back a bit further into my own personal journey because it turns out that the number one reason to reach out to you for anything is tech support on various things. I don’t talk about this often, but I started my career moonlighting as a Windows admin, back in the Windows 2003 server days; and it was an experience, and licensing was a colossal pain, and I finally had enough of it one day, in 2006, switched over to Unix administration on BSD, and got a Mac laptop, and that was really the last time that I used Windows in anger. Now, it’s been 15 years since that happened, and I haven’t really been tracking the Windows ecosystem. What have I missed?

Scott: [laugh]. There’s a lot there that you just said. So first, different people have their religions and they’re excited about them, and I encourage everyone to be excited about the religion that they’re excited about. It’s great to be excited about your thing, but it’s also really not cool to be a zealot about your thing. So hey, be excited about Windows, be excited about Linux, be excited about Mac.

Just don’t tell me that I’m going to heck because I didn’t share your enthusiasm. Let’s just be excited together and we can be friends together. I’ve worked on Linux at Nike, I’ve worked on Mac, I’ve worked on Windows, you know, I’ve been there before these things existed and I’ll be there afterwards.

Corey: Exactly. At some point being a zealot for a technology just sort of means you haven’t been around the block enough to understand how it’s going to break, how it’s going to fail, how it’s going to evolve, and it doesn’t lead to a positive outcome for anyone. It fundamentally becomes a form of gatekeeping more than anything else, and I just don’t have the stomach for it.

Scott: Yeah. And ultimately, we’re just looking for—you know, we got these smart rocks that we taught how to think with lightning, and they’re running for loops for us. And maybe they’re running them in the cloud, maybe they’re running locally. So, I’m not really too worried about it. Windows is my thing of choice, but just, you know, one person’s Honda is another person’s Toyota; you get excited about the brand that you start out with.

So, that’s that. Currently, though, Windows has gone, at least in the last maybe 20 years, from one of those things where there’s generational pain, and, like, “Microsoft killed my Pappy, and I’ll never forgive you.” And it’s like, yeah, there was some dumb stuff in the ’90s with Internet Explorer, but as a somewhat highly placed middle manager at Microsoft, I’ve never been in an active mustache-twirling situation where I was behind closed doors and anyone thought anything nefarious. There’s only a true, “What’s the right thing for the customer? What is the right thing for the people?”

My whole thing is to make it so developers can develop more easily on Windows, so I’m very fortunate to be helping some folks in a partnership between the Windows division and the developer division that I work in to make Windows kick butt when it comes to dev. Historically, the Windows terminal, or what’s called cmd.exe which is run by a thing called the console host has sucked; it has lagged behind. So, if you drop out to the command line, you’ve got the, you know, the old, kind of, quote-unquote, “DOS shell” with a cmd processor—it’s not really DOS—running in an old console host. And it’s been there for gosh, probably early ’90s. That sucks.

But then you got PowerShell. And again, I want to juxtapose the difference between a console—or a terminal—and a shell. They’re different things. There’s lots of great third-party terminals in the ecosystem. There’s lots of shells to choose from, whether it be PowerShell, PowerShell Core—now PowerShell 7.0—or the cmd, as well as bash, and Cygwin, and zsh, and fish.

But the actual thing that paints the text on Windows has historically not been awesome. So, the new open-source Windows terminal has been the big thing. If you’re a Machead and you use iTerm2, or Hyper, or things like that, you’ll find it very comfortable. It’s a tabbed terminal, split-screen, ripping fast, written in, you know, DirectX, C++ et cetera, et cetera, all open-source, and then it lets you do transparency, and background colors, and ligature fonts, and all the things that a great modern terminal would want to do. That is kind of the linchpin of making Windows awesome for developers, then gets even awesomer when you add in the ability that we’re now shipping an actual Linux kernel, and I can run N number of Linuxes side-by-side, in multiple panes, all within the terminal.

This getting to the point about juxtaposing the difference between a terminal and a console and a shell. So, I’ve got, on the machine, I’m talking to you on right now, on my third monitor, I’ve got Windows terminal open with PowerShell on Windows on the left, Ubuntu 18.04 LTS on the right, with the fish shell. And then I’ve got another Ubuntu 20.04 with bash, a standard bash shell.

And I’m going and testing stuff in Docker, and running .NET in Docker, and getting ready to deploy my own podcast website up into Azure. And I’m doing it in a totally organic way. It’s not like, “Oh, I’m just running a virtual machine.” No, it’s integrated. That’s what I think you’d be impressed with.

Corey: That right there is the reason that I generally tended to shy away from getting back into the Windows ecosystem for the longest time—and this is not a slam on Windows, by any stretch of the—

Scott: No of course. Sure, sure, sure.

Corey: —imagination—my belief has always been that you operate within the environment as it’s intended to be operated within, and it felt at the time, “Oh, install Cygwin, and get all this other stuff going, and run a VM to do it.” It felt like I was fighting upstream in some respects.

Scott: Oh, yeah, that’s a great point. Let’s talk about that for a second. So—

Corey: Let’s do it.

Scott: So, Cygwin is the GNU utilities that are written in a very nice portable C, but they are written against the Windows kernel. So, the example I like to use is ls, you type ls, you list out your directory, right? So, ls and dir are the same thing for this conversation. Which means that someone has to then call a system call—syscall in Linux, Windows kernel call in Windows—and say, “Hey, would you please enumerate these files, and then give me information about them, and check the metadata?” And that has to call the file system and then it’s turtles all the way down.

Cygwin isn’t Linux. It’s the bash and GNU utilities recompiled and compiled against the Windows stuff. So, it’s basically putting a bash skin on Windows, but it’s not Linux; it’s bash. Okay? But WSL is actually Linux, and rather than firing up a big 30 gig Hyper-V, or VirtualBox, or Parallels virtual machine, which is, like, a moment—“I’m firing up the VM; call me in an hour when it comes back up.”—and when the VM comes up, it’s, like, a square on your screen and now you’re dealing with another thing to manage.

The WSL stuff is actually a utility virtual machine built on a lower subsystem, the virtualization platform, and it starts in less than a second. You can start it faster than you can say, one one-thousand. And it goes instantly up, it automatically allocates and deallocates memory so that it’s smart about memory, and it’s running the actual Linux kernel, so it’s not pretending to be Linux. So, if your goal is a Linux environment and you’re a Linux developer, the time of Linux on the desktop is happening, in this case, on the Windows desktop. Where you get interesting stuff, and where I think your brain might explode is, imagine you’re in the terminal, you’re at the Linux file system at the bash prompt, and you type ‘notepad.exe.’ What would you expect to happen? You’d expect it to try to find it in a Linux path and fail.

Corey: Right. And then you’re trying to figure out, am I in this environm—because you generally tend to run these things in the same-looking terminal, but then all the syntax changes as soon as you go back into the Windows native environment, you’re having to deal with line-ending issues on a constant basis, and you just—

Scott: Oh, yeah. All that stuff, where.

Corey: And as soon as you ask for help because back in those days, I was looking primarily into using freenode as my primary source of support because I network staff on the network for the better part of a decade, and the answer is, “I’m having some trouble with Linux,” and the response is, “Oh, you’re doing this within a Windows environment? Get a real computer, kid.” Because it’s still IRC, and being condescending and rude to anyone who makes different choices than you do is apparently the way that was done back then.

Scott: Well, today in 2020 because we don’t want to just have light integration with Windows—and by light integration, like, I don’t know if you remember firing up a virtual machine on Windows and then, like, copy-pasting a file, and we were all going like, “Oh, my God, that’s amazing.” I drug the file in and then it did a little bit of magic and then moved the file from Windows into Linux. What we want is to blur the lines between the two so you can move comfortably. When you type explorer.exe or notepad.txt in Linux on Windows, Linux says no, and then Windows gets the chance, fires it up, and can access the Linux file system.

And since Notepad now understands line endings, just happily, you can open up your .profile, your bash_profile, your csh file in Notepad, or—here’s where it gets interesting—Visual Studio Code, and comfortably run your Windows apps, talking to your Linux file system, or in the—coming soon, and we’ve blogged about this and announced it at Build last year, run Linux GUI apps seamlessly so that I could have two browsers up, two Chromes, one Windows and one Linux, side-by-side, which is going to make web testing even that much easier. And I’m moving seamlessly between the two. Even cooler, I can type explorer.exe and then pass in dot, which represents the current folder, and if the current folder is the Linux file system, we seamlessly have a Plan 9 server—basically a file server that lets you access your Linux file system—from—

Corey: Is it actually running Plan 9?

Scott: It is a Plan 9 server.

Corey: That is amazing. I’m sorry, that is a blast from the past.

Scott: I’m glad. And we can run N number of Linuxes; this isn’t just one Linux. I’ve got Kali Linux, two different Ubuntus, and I could tar up the user mode files on mine, zip them up, give them to you, and you could go and type ‘wsl–import,’ and then have my Linux file system. Which means that we could make a custom Screaming in the Cloud distro, put it in the Windows Store, put it up on GitHub, build our own, and then the company could standardize on our Linux distro and run it on Windows.

Corey: That is almost as terrible an idea as using a DNS service as a database.

Scott: [laugh].

Corey: I love it. I’m totally there for it.

Scott: It’s really nice because it’s extremely—the point is, it has to have no friction, right? So, if you think about it this way, I just moved—I blogged about this; if people want to go and learn about it—I just moved my blog of 20 years off of a Windows Server 2008 server running under someone’s desk at a host, into Azure. This is a multi-month-long migration. My blog, my main site, kind of the whole Hanselman ecosystem moved up in Azure. So, I had a couple things to deal with.

Am I going to go from Windows to Linux? Am I going to go from a physical machine to a virtual machine? Am I going to go from a physical machine to a virtual machine to a Platform as a Service? And when I do that, well, how is that going to change the way that I write software? I was opening it in Visual Studio, pressing F5, and running it in IIS—the Internet Information Server for Windows—for the last 15, 20 years.

How do I change that experience? Well, I like Visual Studio; I like pressing F5; I like interactive debugging sessions. But I also like saving money running Linux in the cloud, so how can I have the best of all those worlds? Because I wrote the thing in .NET, I moved into .NET 5, which runs everywhere, put together a Docker file, got full support for that in Visual Studio, moved it over into WSL so I can test it on both Windows and Linux.

I can go into my folder on my WSL, my Windows subsystem for Linux, type code dot, open up Visual Studio Code. Visual Studio Code splits in half. The Windows client of Visual Studio Code runs on Windows; the server, the Visual Studio Code server, runs in WSL providing the bridge between the two worlds, and I can press F5 and have interactive debugging and now I’m a Linux developer even though I’ve never left Windows. Then I can right-click publish in Visual Studio to GitHub Actions, which will then throw it into the cloud, and I moved everything over into Azure, saved 30%, and everything’s awesome. I’m still a Windows developer using Visual Studio. So, it’s pretty much I don’t know, non-denominational; kind of mixing the streams here.

Corey: It is. And let me take it a step further. When I’m on the road, the only computer I bring with me these days—well, in the before times, let’s be very realistic. Now, when ‘I’m on the road,’ that means going to the kitchen for a snack—the only computer I bring with me is my iPad Pro, which means that everything I do has a distinct application. For when I want to get into my development environment, historically it was, use some terminal app—I’m a fan of Blink, but everyone has their own; don’t email me.

And everything else I tended to use looked an awful lot like a web app. If there wasn’t a dedicated iOS app, it was certainly available via a web browser. Which leads me to the suspicion that we’re almost approaching a post-operating-system world where the future development operating system begins to look an awful lot—and people are going to yell at me for this—Visual Studio Code.

Scott: Mmm.

Corey: It supports a bunch of remote activities now that GitHub Codespaces is available—at least to my account; I don’t know if it’s generally available yet—but I’ve been using it; I love it; everything it winds up doing is hosted remotely in Azure; I don’t have to think about managing the infrastructure; it’s just another tab within GitHub, and it works. My big problem is that I’m trying to shake, effectively, 20 years of muscle memory of wrestling with Vim, and it takes a little bit of a leap in order to become comfortable with something that’s a more visually-oriented IDE.

Scott: Why don’t you use the VsVim, Jared Parsons Vim plugin for Visual Studio?

Corey: I’ve never yet found a plugin that I like for something else to make it behave like Vim. Vimperator is a browser extension, all of it just tends to be unfortunate and annoying in different ways. For whatever reason, the way that I’m configured or built, it doesn’t work for me in the same way. And it goes back to our previous conversation about using the native offering as it comes, rather than trying to make it look like something else.

Scott: Okay. I would just offer to you and for other Vim people who might be listening, that VS Code Vim does have 2.5 million installs, over 2 million people happily using that. And they are—

Corey: Come to find it only has 200,000 actual users; there was an installation bug and one person just kept trying over and over and over. I kid, I kid.

Scott: No, seriously though, these are actual Vim-heads and Jared Parsons is a developer at Microsoft who is like, out of his cold dead hands you’ll pull his Vim. So, there’s solutions; whether you’re Vim or Emacs, you know, we welcome all comers. But to your point, the Visual Studio, once it got split in half, where the language services, those services that provide context to Python, Ruby, C# C++ et cetera, once those extensions can be remoted, they can run on Windows, they can run on Linux, they can run on the cloud. So, VS Code being split in half as a client-server application has really made it shine. And for me, that means that I don’t notice a difference, whether I’m running VS Code on Windows or running VS Code to a remote Linux install, or even using SSH and coding on Windows remotely to a Raspberry Pi.

Corey: I love the idea. I’ve seen people do this, in some respects, back in the days of Code Server being a project on GitHub, and it took a fair bit of wrangling to get that to work in a way that wasn’t scarily insecure and reliable. But once it was up and running, you could effectively plug a Raspberry Pi in underneath your iPad and effectively have a portable computer on the go that did local development. I’m looking at this and realizing the future doesn’t look at all like what I thought it was going to, and it’s really still kind of neat.

Scott: Mm-hm.

Corey: There’s a lot of value in being able to make things like this more accessible, and the reason I’m excited about a lot of this, too, is that aligned with a generous free tier opportunity, which I don’t know final pricing for things like GitHub Codespaces, suddenly the only real requirement is something that can render a browser and connect to the internet for an awful lot of folks to get started. It doesn’t require a fancy local overpowered development machine the way a lot of things used to. And yes, I know; there are certain kinds of development that are changing in that respect, but it still feels to me like it has never been easier to get started with all of this technology than ever before, with a counterargument that there’s so many different directions to go in. “Oh, I want to get started using Visual Studio Code or learning to write JavaScript. Great. How do I do this? Let me find a tutorial.” And you find 20 million tutorials, and then you’re frozen with indecision. How do you get past that?

Scott: Yeah, there is and always will be, unfortunately, a certain amount of analysis paralysis that occurs. I started a TikTok recently to try to help people to get involved in coding, and the number one question I get—and I mean, thousands and thousands of them—are like, “Where do I start?” Because everyone seems to think that if they pick the wrong language, that will be a huge mistake. And I can’t think of a wrong language, you know? Like, what human language should I learn?

You know, English, Chinese, Arabic, Japanese. Pick one and then learn another one if you can. Learn a couple. But I don’t think there’s a wrong language to learn because the basics of computer science are the basics of computer science. I think what we need to do is remind people that computers are computers no matter whether they’re an Android phone or a Windows laptop, and that any forward motion at all is a good thing. I think a lot of people have analysis paralysis, and they’re just afraid to pick stuff.

Corey: I agree with what you’re saying, but I’m also going to push back gently on what you’re saying, as well. If someone who is new to the field was asking me what language to learn, I would be hard-pressed to recommend a language that was not JavaScript. I want to be clear, I do not understand or know JavaScript at all, but it’s clear from what I’m seeing, that is, in many ways, the language of the future. It is how frontend is being interacted with; there are projects from every cloud provider that wind up managing infrastructure via JavaScript primitives. There are so many on-ramps for this, and the user experience for new folks is phenomenal compared to any language that I’ve worked with in my career. Would you agree with that or disagree with that assessment?

Scott: So, I’ve written blog posts on this topic, and my answer is a little more ‘it depends.’ I say that people should always learn JavaScript and one other language, preferably a systems language, which also may be JavaScript. But rather than thinking about things language-first, we think about things solutions-first. If someone says, “I want to do a lot of data science,” you don’t learn JavaScript. If someone says, “I want to go and write an Android app,” yeah, you could do that in JavaScript, but JavaScript is not the answer to all questions.

Just as the English language, while it may be the lingua franca, no pun intended, it is not the only language one should pick. I usually say, “Well, what do you want to do?” “Well, I want to write a video game for the Xbox.” Okay, well, you’re probably not going to do that in JavaScript. “Oh, I want to do data science. I want to write an iPhone app.” JavaScript is the language you should learn if you’re going to be doing things on the web, yes, but if you’re going to be writing the backend for WhatsApp, then you’re not going to do that JavaScript.

Corey: This episode is sponsored by ExtraHop. ExtraHop provides threat detection and response for the Enterprise (not the starship). On-prem security doesn’t translate well to cloud or multi-cloud environments, and that’s not even counting IoT. ExtraHop automatically discovers everything inside the perimeter, including your cloud workloads and IoT devices, detects these threats up to 35 percent faster, and helps you act immediately. Ask for a free trial of detection and response for AWS today at extrahop.com/trial.

Corey: Yeah, I think you’re right. It comes down to what is the problem you’re trying to solve for? Taking the analogy back to human languages, well, what is your goal? Is it just to say that you’ve learned a language and to understand, get a glimpse at another culture through its language? Yeah, there is no wrong answer. If it’s that you want to go live in France one day and participate in French business discussions, I have a recommendation for you, and it’s probably not Sanskrit.

At some point, you have to align with what people want to do and the direction they’re going in with the language selection. What I like about JavaScript is, frankly, it’s incredible versatility as far as problems to which it can be applied. And without it, I think you’re going to struggle as you enter the space. My first language was crappy Perl—slash bash because everyone does bash when you’re a systems administrator—and then it has later evolved now to crappy Python as my language of choice. But I’m not going to be able to effectively do any frontend work in Python, nor would I attempt to do so.

My way of handling frontend work now is to have the good sense to pay a professional. But if you’re getting started today and you’re not sure what you want to do in your career, my opinion has always been that if you think you know what you want to do in your career, there’s a great chance you’re going to be wrong, but pursuing the thing that you think you want to do will open other opportunities and doors, and present things to you that will catch your interest in a way you might not be able to anticipate. So, especially early on in careers, I like biasing for things that give increased options, that boost my optionality as far as what I’m going to be able to do.

Scott: Okay. I think that’s fair. I think that no one ever got fired for picking IBM; [laugh] no one ever jeopardized their career by choosing JavaScript. I do think it’s a little more nuanced, as I mentioned.

Corey: It absolutely is. I am absolutely willing to have a disagreement with you on that front. I think the thing that we’re aligned on is that whatever you pick, make sure it’s something you’re interested in. Don’t do it just for—like, “Well, I’m told I can make a lot of money doing X.” That feels like it’s the worst reason to do things, in isolation.

Scott: That’s a tough one. I used to think that, too, but I am thinking that it’s important to note and recognize that it is a valid reason to get into tech, not for the passion because for no other reason that I want to make a lot of money.

Corey: Absolutely. I could not agree with you more, and that is… something I’ve gotten wrong in the past.

Scott: Yeah. And I have been a fan of saying, you know, “Be passionate and work on these things on the side,” and all that kind of stuff. But all of those things involve a lot of assumptions and a lot of privileges that, you know, people have: that you have spare time and that you have a place to work on these things. I work on stuff on the side because it feeds my spirit. If you work on woodworking, or drones, or gardening on the side, you know, not everything you work on the side has to be steeped in hustle culture and having a startup, or something that you’re doing on the side.

Corey: Absolutely. If you’re looking at a position of wanting to get into technology because it leads to a better financial outcome for you and that is what motivates you, you’re not wrong.

Scott: Exactly.

Corey: The idea that, “Oh, you have to love it or you’ll never succeed.” I think that some of the worst advice we ever wind up giving folks early in their career—particularly young people—is, ‘follow your passion.’ That can be incredibly destructive advice in some contexts, depending upon what it is you want to do and what you want your life to look like.

Scott: Yeah, exactly.

Corey: One of the things that I’ve always been appreciative of from afar with Microsoft has been there’s an entire developer ecosystem, and historically, it’s focused on languages I can barely understand: ASP.NET, the C# is deep in that space, F#, I think, is now a thing as well. There’s an entire ecosystem around this with Visual Studio the original, not Visual Studio Code—turns out naming is one of those things that no tech companies seems to get right—but it feels almost like there’s an entire ecosystem there for those of us who spent significant time—and I’m speaking for myself here, not you—in the open-source community talking about things like Perl and whatnot, I never got much exposure to stuff like that. I would also classify Enterprise Java as being in that direction as well. Is there a bifurcation there that I’m not seeing, or was I just never talking to the right people? All the above? Maybe I was just—maybe I had blinders on; didn’t realize it.

Scott: There was a time when the Microsoft developer ecosystem meant write things for Windows, do things on Windows, use languages that Microsoft made and created. And now, with the rise of the cloud and with the rise of Software as a Service, Microsoft is a much simpler company, which is a funny thing to say for such a complicated company. Microsoft would love to run your for loop in the cloud for money. We don’t care what language you use; we want you to use the language that makes you happy. Somewhere around five to seven years ago, in the developer division, we started optimizing for developer happiness.

And that’s why you can write Ruby, and Perl, and Python, and C, and C++ and C# and all those different things. Even C# now, and .NET, is owned by the .NET Foundation and not by Microsoft. Microsoft, of course, is one of the primary users, but we’ve got a lot of—Samsung is a huge contributor, Google is a huge contributor, Amazon Web Services is a big contributor to .NET.

So, Microsoft’s own zealotry towards—and bias towards our own languages has, kind of, gone away because Office is on iPhone, right? Like, anywhere that you are, we’ll go there. So, we’re really going where the customer is rather than trying to funnel the customer into where we want them to be, which is a really an inverted way of doing things over the way it was done 20, 30 years ago. In my opinion.

Corey: This gets back to the idea of the Microsoft cultural transformation. It hasn’t just been an internal transform; it’s been something that is involved with how it’s engaging with its customers, how it’s engaging with the community, how it’s becoming available in different ways to different folks. It’s hard to tell where a lot of these things start and where a lot of these things stop. I don’t pretend to be a Microsoft “fanboy,” quote-unquote, but I believe it is impossible to look at what has happened, especially in the world of cloud, and not at the very least respect what Microsoft has been able to achieve.

Scott: Well, I came here to open source stuff. I’m surely not responsible for the transformation, I’m just a cog in the machine, but I can speak for the things that I own, like .NET and Visual Studio Community, and I think one of the things that we have gotten right is we are trying to create zero-distance products. You could be using Visual Studio Code, find a bug, suggest a feature, have a conversation in public with the PMs and devs that own the thing, get an insider’s build a few days later, and see that promoted to production within a week or two. There is zero distance between you the consumer and the creator of the thing.

And if you wanted to even fix the bug yourself, submit a pull request, and see that go into production, you could do that as well. You know, some of our best C# compiler folks are not working for Microsoft and they are giving improvements, they are making the product better. So, zero-distance in many ways, if you look at the other products at Microsoft, like PowerToys is a great thing, which is [unintelligible 00:32:06] an incubator for Windows features. We’re adding stuff to the PowerToys open-source project like launchers, and a thing called FancyZones that is a window tiling manager, you know, features that prosumers and enthusiasts always wished Windows could have, they can now participate in, thereby creating a zero-distance product in Windows itself.

Corey: And I want to point out as well that you are still Microsoft. You, the collective you. I suppose you personally; that is where your email address ends. But you’re still Microsoft. This is still languages, and tools, and SDKs, and frameworks used by the largest companies in the world. This zero-distance approach is being done on things that service banks, who are famously not the earliest adopters of some code that I wrote last night; it’s probably fine.

Scott: Do you know what my job was before I came here?

Corey: Tell me.

Scott: I was the chief architect at a finance company that created software for banks. I was responsible for a quarter of the retail online banking systems in North America, built on .NET and open-source software. [laugh].

Corey: So, you’ve lived that world. You’ve been that customer.

Scott: Trying to convince a bank that open-source was a good idea in the early 2000s was non-trivial. You know, sitting around in 2003, 2004, talking about Agile, and you know, continuous integration, and build servers, and then going and saying, “Hey, you should use the software,” trying to deal with lawyers and explain to them the difference between the MIT, Apache, and GPL licenses and what it means to their bank was definitely a challenge. And working through those issues, it has been challenging. But open-source software now pervades. Just go and look at the license.txt in the Visual Studio Program Files folder to see all of the open-source software that is consumed by Visual Studio.

Corey: One last topic that I want to get to before we call it a show is that you’ve spent a significant portion of your career, at least recently, focusing on, more or less, where the next generation of engineers, developers, et cetera, come from. And to that end, you’ve also started recently with TikTok, the social media platform. Are those two things related, first off, or am I making a giant pile of unwarranted assumption?

Scott: [laugh]. I think that is a fair assumption. So, what’s going on is I want to make sure that as I fade away and I leave the software industry in the next, you know, N number of years, that I’m setting up as many people as possible for success. That’s where my career started when I was a professor, and that’s hopefully where my career will end when I am a professor again. Hopefully, my retirement gig will have me teaching at some university somewhere.

And in doing that, I want to find the next million developers, right? Where are they, the next 10 million developers? They’re probably not on Twitter. They might be a lot of different places: they might be on Discord, they might be on Reddit, they might be on forums that I haven’t found yet. But I have found, on TikTok, a very creative and for the most part kind and inclusive community.

And both myself and also recently, the Visual Studio Code team have been hanging out there, and sharing our creativity, and having really interesting conversations about how you the listener can if not be a programmer, be a person that knows better the tools that are available to you to solve problems.

Corey: So, I absolutely appreciate and enjoy the direction that you’re going in, but again, people invite you to things and then spring technical support questions on you. Can you explain what TikTok is? I’m still trying to wrap my head around it because I turned around and discovered I was middle-aged one day.

Scott: Sure. Well, I mean, I am an old man on TikTok, to be clear. TikTok, like Twitter, revels in its constraints. If you recall, there was a big controversy when Twitter went from 140 characters to 280 because people thought it was just letting the constraint that we were so excited about—which was artificial because it was the length of a standard message service text—

Corey: I’m one of those people who bitterly protested it. I was completely wrong.

Scott: Right? But the idea that something is constrained, that TikTok is either 15 seconds, or less than 60, it’s similar to Vine in that it is a tiny video; what can I do in one minute? Additionally, before they allowed uploading of videos, everything was constrained within the TikTok editor, so people would do amazing and intricate 30 and 40 shot transitions within a 60 second period of time. But one of the things I find most unique about TikTok is you can reply to a text comment with a video. So, I make a video—maybe I do 60 seconds on how to be a software engineer—somebody replies in text, I can then reply to that text with a video, and then a TikTok creator can do what’s called a stitch and reply to my video with a video.

So, I could take 15 seconds of yours, a comment that you made, and say, “Oh, this is a great comment. Here’s my thoughts on that comment.” Or we could even do a duet where you record a video and then I record one, side-by-side. And we either simulate that we’re actually having a conversation, or I react to your video as well. Once you start teaching TikTok about yourself by liking things, you curate a very positive place for yourself.

You might get on TikTok, not logged in, and it’s dancing, and you might find some inappropriate things that you don’t necessarily want to see, or you’re not interested in, but one of the things that I’ve noticed as I talk about my home network and coding is people will say, “Oh, I finally found adjective TikTok; I finally found coding TikTok I finally found IT TikTok. Oh, I’m going to comment on your post because I want to stay on networking TikTok.” And then your feed isn’t just a feed of the people that you follow, but it’s a feed of all the things that TikTok thinks you’re excited about. So, I am on this wonderful TikTok of linguistics and languages, and I’m learning about cultures, and I’m on indigenous TikTok, and I’m on networking TikTok. And the mix of creativity and the constraint of just 60 seconds has been, really, a joy. And I’ve only been there for about a month and I’ve blessed to have 80,000 people hanging out with me there.

Corey: It sounds like you’re quite the fan of the platform, which alone in isolation, is enough to get me to look at it in more depth.

Scott: I am a fan of creativity. I would also say though, it’s very addictive once you find your people. I’ve had to put screen time limits on my own phone to keep me from burning time there.

Corey: That is all of tempting, provocative, and disturbing. I—

Scott: You should hang out with me on YouTube, then. I just got my 100,000 YouTube Silver Play Button in the mail. That’s where I spend my time doing my long-form. I just did, actually, 17 minutes on WSL and how to use Linux. That might be a good starter for you.

Corey: It very well might. So, if people want to learn more about what you’re up to, and how you think about the wide variety of things you’re interested in, where can they find you?

Scott: They should start at my last name dot com: Hanselman.com. They used to be able to Google for Scott, and I was in an epic battle with Scott brand toilet paper tissue, and then they trademarked the name Scott and now I’m somewhere in the distant second or third page. It was a tragedy. But as an early comer—

Corey: Oh, my condolences.

Scott: Yeah, oh my God. As an early comer to the internet, it was me and Scott Fly Rods on the first page, for many, many years. And then—

Corey: If it helps, you and Scott Fly Rods are both on page two.

Scott: Oh. Well, the tyranny of the Scott toilet paper conspiracy against me has been problematic.

Corey: Exactly.

Scott: [laugh].

Corey: Thank you so much for taking the time to speak with me today. I really do appreciate it.

Scott: It’s my pleasure.

Corey: Scott Hanselman, partner program manager at Microsoft and so much more. I’m Cloud Economist Corey Quinn. This is Screaming in the Cloud. If you’ve enjoyed this podcast, please leave a five-star review on your podcast platform of choice, whereas if you’ve hated this podcast, please leave a five-star review on your podcast platform of choice, along with a crappy comment that starts with a comment that gatekeeps a programming language so we know to ignore it.

Corey: If your AWS bill keeps rising and your blood pressure is doing the same, then you need The Duckbill Group. We help companies fix their AWS bill by making it smaller and less horrifying. The Duckbill Group works for you, not AWS. We tailor recommendations to your business and we get to the point. Visit duckbillgroup.com to get started.

Announcer: This has been a HumblePod production. Stay humble.

Join our newsletter

checkmark Got it. You're on the list!
Want to sponsor the podcast? Send me an email.

2021 Duckbill Group, LLC