am the host of “.NET Rocks!”, an Internet audio talk show for .NET developers online at www.dotnetrocks.com and msdn.microsoft.com/dotnetrocks. My co-host Richard Campbell and I interview the movers and shakers in the .NET community. We now have over 155 shows archived online, and we publish a new show every Monday morning. For more history of the show check out the May/June 2004 issue of CoDe Magazine, in which the first column appeared. In each issue of “Heard on .NET Rocks” I like to highlight some of my favorite moments from a recent show.
In show #131, Richard and I caught up with David Treadwell at the 2005 Microsoft Professional Developers Conference in Los Angeles. David is corporate vice president of the .NET Developer Platform team in the Developer Division at Microsoft Corp. Even though he’s a VP, he got his start at Microsoft as a developer on perhaps the most important project to come out of Redmond.
Carl Franklin: So David, hi. Tell us about yourself: Who are you, and what do you do?
David Treadwell: I am the Vice President of Microsoft .NET Developer Platform team. Essentially I am responsible for the engineering of the platform components of .NET. That includes things like the CLR, ASP.NET, the compact framework, several other lower-level technologies.
Carl Franklin: So I guess you are in charge of .NET?that’s a colloquial way to say that.
David Treadwell: Well that’s broad. I mean, .NET has many other components including the Web services stuff and the tools aspects and what not?
Carl Franklin: The framework and the run time.
David Treadwell: ?Yeah, the framework and the run time components is what I am responsible for.
Carl Franklin: We should establish also for the listeners that you’re a developer.
David Treadwell: Yes. I started at Microsoft 16 years ago, writing code with Kernigan and Ritchie beside my desk when we had to do NT operating system kernel stuff.
Richard Campbell: Excellent.
Carl Franklin: So what kinds of things were you working on way back? Windows 1.0? Were you back in that age?
David Treadwell: Actually I wasn’t in the traditional Windows groups. I started on the NT team, which was basically a bunch of folks from Digital who came to Microsoft to create a new operating system and one college kid, which was me, and so I had the opportunity?
Richard Campbell: You were the college kid.
David Treadwell: I was the college kid. I had the opportunity to work with a bunch with people who knew what they were doing.
Richard Campbell: Wow that’s cool.
David Treadwell: Yeah it was fun.
Richard Campbell: What a team to be on.
David Treadwell: And I was a kid out of college. I had, frankly, no life outside of Microsoft as I was working 80 hours a week just writing code all day long.
Richard Campbell: I thought that’s how all Microsoft employees work.
David Treadwell: That’s what I say. Everybody out of college?you start 80 hours a week. That’s kind of the normal thing to do.
Carl Franklin: And in college you studied computer science, I take it?
David Treadwell: Actually, I studied electrical engineering in college. It’s a funny story. I only took one CS course in college. It was called Systems. Throughout my college career it was the worst grade I got in college and I think I decided that I wanted some sort of challenge because I went into the industry to basically work on computer systems.
Richard Campbell: That’s funny. I know a lot of electrical engineers that ended up in the computer industry. Really, the engineering discipline is an excellent discipline for writing great applications.
David Treadwell: At its core, most of college as a technical person is learning how to solve problems and the technology is going to change quickly over time. It’s not so much exactly what you learn; it’s your ability to solve problems.
Carl Franklin: Dan Appleman is an EE.
Richard Campbell: Exactly true. The disciplined mind that it takes to succeed as an engineer is exactly the kind of mind it takes to write programs.
Carl Franklin: Especially NT. So, [you went from] no operating system experience to NT? I mean, that’s quite a leap.
David Treadwell: It was quite a leap. I needed to spend 80 hours a week to get 40 hours a week of work done. It was a lot of work.
Carl Franklin: So did you work with David Cutler and those guys?
David Treadwell: Yeah. Actually, Dave was a big brother when I came to Microsoft, an exceptionally respected engineer? somebody I thought I could learn from? and I talked to him before I came to Microsoft and was super impressed with the guy.
Carl Franklin: So was he like a mentor then?
David Treadwell: I wouldn’t call him a mentor per se?. If you know Dave, that’s not really his style.
Carl Franklin: I don’t know. I never met him.
David Treadwell: He was maybe a quiet mentor in the sense that his code served as an example and his work ethic and his focus on quality are things that inspire people.
Carl Franklin: So getting on to this idea of learning about operating systems, where did that take place? Did it take place at the desk? Did you read up on books? Where did your education in OSs come from?
David Treadwell: Well the education in OSs, frankly, came from sitting in front of the computer looking at the code that the other experts from Digital had written… understanding their aspects? understanding the way they put together the system. This is a group of folks who are probably the most senior, the most exceptional group of operating system engineers in the world at the time. They had created other operating systems and they took the [experience] that they had there and used that to build NT. And one of the great things that I think that they did is? because they’d been through it enough times? they had a real vision of what the system needed to be. And in fact, today, a lot of the code in Vista is nearly unmodified from when Dave Cutler and Daryll Havens and Chuck Lenzmeir? when these folks wrote this back in 1988-1989.
Richard Campbell: Yeah, they got it right then.
David Treadwell: Yeah, they really did and what’s remarkable. They have living software, you know, the things people care about? not just what you maintain on the shelf, but something that’s mainline core code that you care a lot about. That’s essentially persisted for seventeen years. I mean, that’s kind of remarkable!
Carl Franklin: It is remarkable! Well, if you think about it they had a lot of impetus to create something a lot more stable? because obviously Windows had grown to the point where, you know, systems had grown, RAM availability had grown, and we were still working in this 640K model and then the 32-bit Windows 95 came out, but it still wasn’t quite solid enough. So, maybe a lot of people don’t know this but what is it about NT that separates it from the Windows 95 lineage?
David Treadwell: Well, to a very high level, NT is a fundamentally different kernel. All the guts of NT are different than the guts of Win9X, which was essentially DOS. With Win9X we took the DOS system and put a new shell on it, put a new programming model on it. But, DOS had never really been designed to support a multithreaded, preemptive, multitasking operating system. It just wasn’t the right base for that. And the strategy was that NT would serve as a base which was written for that level of system. The challenge, of course, was that in the early 90s NT required more resources, mostly memory and CPU, than the machines were capable of delivering.
Richard Campbell: It really was ahead of its time.
David Treadwell: The early releases of NT, like in NT 3.1, was good for what it did, but you wouldn’t run it very much on a client because it required so much more RAM.
Richard Campbell: I used 3.1 in the command line mode. I thought it was fabulous for that but I was operating servers?that’s what mattered to me.
David Treadwell: For servers it was fine but you wouldn’t use it as a client because the machines of the day weren’t really up to it. So, the main distinguishing [factor] between the NT and the 9X base is basically NT was designed to be a preemptive, multithreaded, multitasking operating system, and works pretty well as that base.
Carl Franklin: We had tried to have application protection? you know protection from crashing and all that kind of stuff? going all the way back to the AT in protected mode, so, what is it in terms of memory management about the NT Base which is now the lineage in Windows 2000 and XP
David Treadwell: And Vista.
Carl Franklin: And Vista is obviously the up-and-coming iteration? What is it about the memory management that’s different from the 9X lineage?
David Treadwell: It essentially was designed right from the start to be a virtual memory system. With DOS it wasn’t designed to be virtual memory in the beginning and so it had to be?
Carl Franklin: So a lot of swapping…
David Treadwell: Yeah, it had to be retrofitted, and retrofitting something like that is pretty tough to do effectively. You can’t really put something so deep and [fundamental] on top of the system. Whereas [with] NT?the guys who built that knew right up front that that was going to be a prerequisite for their operating system. So, they really designed that kind of infrastructure right into the system.
Carl Franklin: And you can definitely tell, I mean, there was an option in NT to run a program in its own process and I guess the process is the magic that keeps things separate.
David Treadwell: Right, exactly. The process is the boundary of protection between code.
Carl Franklin: And there are so many people out there now that think, “Oh, I don’t use the computer that much. I am just going to stick with the old versions of Windows, Windows Me, that kind of stuff, and Windows 98.”
Richard Campbell: The big difference was when something blew up?and it blew up once in a while, you know software would fail. On a 9X machine, once you had a piece of software fail you knew, you are on a time limit to rebuild.
David Treadwell: The reboot’s coming!
Richard Campbell: Here it comes. You know you might as well get there first before it does so itself. Whereas, with an NT box, when a program died, the program died. That’s all that died. Everything else was fine.
David Treadwell: And essentially the philosophy is that, if a program is able to impact the rest of the system, well, that’s a bug in the system.
Richard Campbell: Right.
David Treadwell: There are certain kinds of things, like, if something is spinning and taking up CPU, okay, that you can’t control. But, in general, the rule is [if a] program degrades the system, [that’s a] system bug not a program bug, which is different.
Richard Campbell: Program A shouldn’t be able to damage Program B. That’s what an OS’s job is: to say “Oh no, you play in your own pool.”
Carl Franklin: And in what operating system were programs running in their own process by default? There was an option in NT, wasn’t there? In NT4, I think, it was even an option, wasn’t it?
David Treadwell: Well, even in 9X, programs kind of have their own process but there is less protection between the processes in 9X. In NT, it’s essentially default that you have to go out of your way to run other code in your process. By default, you own your process and what’s in that process is under your control. Other processes can’t hijack your own process that your are running in directly.
Carl Franklin: So, when did you make the jump from operating systems to programming, development framework?
David Treadwell: Well, the history basically goes, I worked on the file server in NT for a while and moved from that to work on Winsock in the early days of the Internet.
Carl Franklin: Oh cool! Dude!
Richard Campbell: Yeah Winsock.
David Treadwell: I wrote the original WinSock spec.
Richard Campbell: Did you really?
Carl Franklin: You wrote the original WinSock?
Richard Campbell: That’s fabulous.
Carl Franklin: Alright! Give me some skin.
David Treadwell: So, I wrote the Winsock stuff and I did the Winsock implementation for NT in ’92 to ’94. And this is when the Internet was just becoming relevant.
Carl Franklin: Sure.
Richard Campbell: And we are still arguing whether TCP/IP was important or not.
David Treadwell: Right! Or OSI. OSI maybe was better architected, and it was going to be the real thing, and these days TCP/IP is [so prevalent that we] don’t even talk about it.
Richard Campbell: Yeah, well, there is only one.
Carl Franklin: And in those days, you were loading Winsock as a third-party tool. What was the public domain stack?
Richard Campbell: Trumpet Winsock.
Carl Franklin: ?Trumpet! That’s what it was. Everybody was loading Trumpet and then you guys built it right into the next…
David Treadwell: Exactly, before Microsoft included it with the system, an end user had to go get their TCP/IP and Winsock implementations from somewhere. A lot of people used Trumpet. There were about ten in the industry.
Carl Franklin: Yeah, there were, there’s a lot.
David Treadwell: They were competing essentially.
Carl Franklin: They all had big ads in the back of PC Week magazine. I remember that.
Richard Campbell: You also got this weird browser thing with it too.
David Treadwell: A couple of years later, yeah. I think its kind of one of the less well-known parts of the success of the Internet is the inclusion of TCP/IP and Winsock with the system. Because before that, you know, it was a fair amount of work to go and install Trumpet Winsock and configure that.
Richard Campbell: Not for the weak! You really had to know a lot of stuff to make that work.
David Treadwell: Exactly. You had to be somewhat expert on it.
Richard Campbell: And if you did it wrong, you really made a mess of things in your machine. That was bad.
David Treadwell: Yup.
Richard Campbell: You’re in trouble.
David Treadwell: That was very complex. That was when everybody had to deal with IP addresses and these days, people are more into the network.
The interview goes on to document the projects David has worked on leading up to Vista including Internet Information Server. Check it out online.