| By Derek Ferguson | Article Rating: |
|
| April 6, 2004 12:00 AM EDT | Reads: |
15,244 |
.NET editor-in-chief Derek Ferguson sat down to talk with Microsoft Software Legend Chris Sells at Microsoft's Professional Developers Conference 2003. In this exclusive interview, Sells talks about how he became involved with teaching and writing about Microsoft technologies, how he came to work for Microsoft, and what it's like to have a hand in the development of the .NET Framework.
.NETDJ: Who are you?
CS: My name is Chris Sells, and I am a member of the Windows development community as well as a content strategist in charge of the MSDN Longhorn Developer Center Web site.
.NETDJ: What are you best known for?
CS: My boyish good looks (laughs)? ATL Internals - a joint effort between Brent Rector and me.
.NETDJ: How did that book come about?
CS: I was going to be DevelopMentor's first Java instructor. I was digging through the Java stuff and a lot of it I liked, but some of it - as a C++ guy - I wasn't ready to accept.
.NETDJ: Such as?
CS: I wasn't at a point where I could accept nondeterministic finalization. So I was complaining pretty loudly about that inside of DevelopMentor. Then Microsoft announced their ATL technology and Don Box called one afternoon and asked, "What if we let someone else do Java and you do ATL?"
ATL was the most mind-bending thing other than COM that I had ever experienced. Unlike COM, I could actually read the source code. I would open up the header files and that was my documentation.
.NETDJ: Wasn't there better documentation readily available?
CS: At the time MSDN had nothing useful on ATL - it still doesn't, compared to the source code. Having taught C++ for several years and consumed every concept I could - even dreaming in C++ - I'd read through the source code saying "What in God's name are they doing?" They were using just so many advanced concepts I'd never even seen.
Learning ATL, for me, was a matter of reaching into the source code and understanding what they were doing and why they were doing it. I asked, "What possible reason could they have for bastardizing my language this way?" But ATL was a thing of beauty and elegance and efficiency - and I was changed forever.
.NETDJ: How did that turn into a book project?
CS: Learning how ATL worked flipped some bits in my head in terms of understanding how to reach behind the scenes and understand what another group of developers had built. It allowed me to understand why they had built it that way and why they didn't build it another way.
That's when I called up Brent - who had already received the contract to write the book - and begged him to let me write the book with him. I just had this burning story in my soul about ATL. That was the first expression of the coming together of my writing and my understanding of how ATL did its magic. I'm still very proud of that book in terms of how it starts, builds its story, and then lets people share those insights - I always write like that now.
People picked up on it, and I still hear from them about how I've changed their lives with that book.
.NETDJ: In the world of .NET, would it still be worth picking up that book?
CS: It turns out that I haven't done any ATL programming since .NET shipped. However, ATL has actually gotten a lot better. For one thing, it has quadrupled in size and - for ISAPI [Internet server application programming interface] folks there is this thing that provides lots of infrastructure for high-performance Web applications.
I've had a lot of requests from people who want the second edition and I have been trying to get it done. Unfortunately, I can't write it myself, but Kirk Fertitta and George Shepherd have already done most of the work to update it to the new version of ATL.
.NETDJ: How will that work?
CS: Basically, they rewrite it, taking ATL 7 sensibilities into account, then I go through and really dig in and ask all of the tough questions and poke holes in all the weaknesses - just the way I worked with Don Box on his Essential .NET book (where I didn't actually write a word).
.NETDJ: So, why do you like .NET now if you didn't like Java when it was new?
CS: I initially had exactly the same reaction to .NET that I had to Java. I started a pretty famous thread on the DevelopMentor mailing list where I said, "I need a hug - I'm looking at this and the model of object destruction in C++ is resource reclamation - while the garbage collector is a fantastic memory manager, it is not a general-purpose resource reclamation mechanism. Every time I acquire any component that has resources other than memory - unlike in C++ or VB or COM - I have to manually reach in on a per-object basis and tell it 'please remove your resources now'."
I wasn't the only one who felt this way. That message became kind of a lightning rod in the community for folks to write in to Microsoft and say, "Yes, we can't live without deterministic finalization." The early adopters were all hard-core, anyhow.
The rest I loved! The GC for memory collection was excellent, but that one piece drove me up the wall. That e-mail - and the resulting outcry from the community - really caused Microsoft to look at that model and say, "Yes, we can see this problem and we can have a common protocol whereby any class can say, 'I have resources other than memory' " - and you can always know by looking for IDisposable, which has a Dispose method that will let it know to reclaim whatever nonmemory resources it holds. This simplifies the API so you always know just to call Dispose.
Ultimately, they retrofitted the entire .NET Framework with that single method. In C# they actually added "using", which lets you acquire a resource the way you usually would, but at the closing curly brace it will generate that Dispose call for you - so now they've solved a ton of resource reclamation issues. Not all of them, but a ton.
.NETDJ: Wow - it must be great to have had such a major impact on the development of an entire platform like .NET!
CS: Well, that's only half the story. The other part of the story is that last year Microsoft Research in Cambridge had a bunch of money to give away, so I submitted a proposal to add COM-style reference counting to Rotor. They funded me to add reference counting to .NET so that I could have the exact same programming model I had under C++ - a hybrid of garbage collection that gives me multiowner support for resources and deterministic finalization.
One of the classic problems with garbage collection is cycles, so it will eventually get around to reclaiming resources. Really, the hybrid model that Chris Taveres implemented was the best of both models. It works great, except that the performance just sucks - and that was their argument. Brian Harry from the CLR team at Microsoft knew that the perf would suck, so he added IDisposable.Dispose instead. Thank God Harry ignored me (although I'm pretty sure that Microsoft could have implemented ref-counting in the CLR to be a lot faster than our implementation).
.NETDJ: So, how did you go from there to working for Microsoft?
CS: I have been working on and off for DevelopMentor for about eight or nine years. It was a magical, amazing place - intellectual stimulation, continuous challenge, amazing peers to push back on my claims - but then the bubble burst and DevelopMentor had to think a lot more about fiscal responsibility, which always takes the fun out of things. Don went off to Microsoft to pursue other things less concerned with fiscal responsibilities and what is left is different simply because of the focus. They have dropped back down into their core competencies - just to make sure that DevelopMentor can survive and thrive. That's what they needed to do.
.NETDJ: What had they been doing previously that had to get dropped?
CS: During the boom, DevelopMentor instructors had the flexibility to create their own courses; regardless of whether or not people wanted these training courses, we would offer them. Sometimes that would go really well, sometimes it didn't. That had to go away. We were living in an unreality; they had to refocus on what the market wanted to consume.
.NETDJ: And that's what you didn't want to give up?
CS: The training lifestyle is a travel lifestyle, and I just wanted to spend a lot more time at home with the Sells brothers (my boys) and my wife. I wanted to do things that I could do remotely, like consulting and training. Unfortunately, DevelopMentor also considered some of what I was working on slightly competitive, so they didn't want me working for them while pursuing these other avenues. Ultimately, I had to put my family first and leave DevelopMentor to become a full-time consultant.
Unfortunately, I was suddenly in a very hostile environment for independent consultants. I was able to pull in a very comfortable income, but I had to be on the road all the time. There weren't enough local gigs in Portland, Oregon. So after 18 months of doing that, I started looking for other stable funding resources. Coincidentally, this Longhorn effort was starting, and some Microsoft folks said they'd really like me to work with them on getting the right Longhorn information into developers' hands. So I interviewed for a couple of jobs where I could be remote and I was very happy to wind up at MSDN working for Sara Williams, and tangentially, with Tim Ewald and Don Box - formerly of DevelopMentor.
.NETDJ: What do you do at Microsoft?
CS: When I interviewed at Microsoft, it was a couple of weeks after attending a Longhorn preview for a limited number of Microsoft's closest friends. I got to spend two days just watching all of the teams saying, "Here's what we're doing in Longhorn." When I interviewed with MSDN, they had a number of positions available. Sara said, "What do you want?" I said "I want to run the Longhorn content here at MSDN," - and that's what I've been doing ever since the middle of 2003.
It's been fun! I've been so focused on the generalist view, trying to organize the content, etc. The Longhorn Developer Center is the culmination of six months of effort for me and MSDN. I'm very proud of what we've produced.
The best part of my job starts now - I get to be a part of this community via newsgroups, blogs, my column, etc., - and I get to reach out to the community and bring just as many as I can to the Dev Center. I'm just doing what I've always done - being a contributor to the Windows community.
.NETDJ: What are you doing here at the PDC?
CS: This is my fifth PDC. I was here when they introduced Windows 95 and when they announced .NET - a couple of the seminal moments in Microsoft history. I was here when they introduced COM and Craig Brockschmidt said, "Here's COM. We don't have inheritance, we have aggregation - and here is why it's better." It took years for most developers to understand what he was talking about.
This PDC is special to me, not only because MS is announcing so many new technologies, but because it's the biggest PDC Microsoft has ever done. We've got the next version of .NET, SQL Server, and the OS - this is a huge PDC from all kinds of different angles - and I get to see it from backstage. It's been fabulous! We're launching a major effort and kicking off this community at the PDC - and it's my job to keep this community going. We're encouraging folks to follow their hearts.
.NETDJ: So what interesting experiences have you had so far at the PDC?
CS: I came down in time to do a preconference seminar on Windows Forms (I just shipped the C# version of my Windows Forms book a few months ago and the PDC was where I launched the VB.NET version). I spoke with Rocky Lhotka; we tag-teamed Windows Forms for a day.
Afterward, I got a call from Don Box, who said "Because of the fires Chris Anderson (who was supposed to do the keynote demo on Monday) is trapped in Reno. Would you come backstage and prepare to give the demo in case he can't make it?" So there I was - after being at the company for only six months - being asked to come backstage and give a major keynote demo.
.NETDJ: Whoa - you must've been extremely excited!
CS: I know most of the luminaries in this industry on a first-name basis, but it was still just so amazing to be backstage in this enormous dark space (it has to be dark for the projectors) with all the group VPs and senior executives there preparing for the keynote talks and working on who will be walking where, etc. It was amazing to just be there.
I was just sitting in my seat soaking it in. Eventually, I was called up on the stage, where they asked my name and fitted me with a Microsoft shirt. Then Don and I hashed out how we were going to work it out. We've done the pair demo thing for years.
It was a blast, but of course I haven't done anywhere near the level of Longhorn coding that I would have liked and I'm nowhere near as expert as Chris. So I was concerned about how it would go for me if I were called on to do the demo. It was a very heady experience.
.NETDJ: You didn't actually wind up having to do the demo though, did you?
CS: Luckily, Chris rolled in at about 11:30 p.m. He had driven eight and a half hours straight with a carload of people he'd never met (a real-world Planes, Trains, and Automobiles). He deserved to be there, though. It's his baby. I was happy for him, but I was also sad. He did a great job, though!
.NETDJ: Tell us about Sells Brothers.
CS: When I worked for DevelopMentor I was an employee. After a while, I started teaching C++. Because of my previous experience, I knew C++ well enough that I understood what happened in the real world. But I learned COM in an academic setting, so I flipped my compensation model to contractor so I could learn the real-world portion. It was an amazing way to learn what COM was really about.
While I was doing this, I needed a company so I could take in the income and do the taxes the right way. At the time, everyone and their brother had their own domain name. All of the good domain names were gone. So, my sister-in-law said, "Why don't you name the company after your kids? Call it 'SellsBrothers'." I scoffed at her, but when I plugged it into Whois, it was available - so that became the name.
Although I'm working for Microsoft now, it's still a fun Web site and is surprisingly well attended. The Editors blog on the Longhorn Developer Center is actually fed from the blog on SellsBrothers.
Looking back, "SellsBrothers" was the best possible name, because it reminds me all the time to think about my family and not get too sucked into work.
Published April 6, 2004 Reads 15,244
Copyright © 2004 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Derek Ferguson
Derek Ferguson, founding editor and editor-in-chief of .Net Developer's Journal, is a noted technology expert and former Microsoft MVP.
- IBM Puts Systems Chief on Leave of Absence
- Amazon Web Services Database in the Cloud
- SpringSource Moving to Spring 3.0
- Virtualization Expo Call for Papers Deadline December 15
- Un-Clouding Federal Security Compliance
- Move Over BI, Here Comes PI - Performance Intelligence
- Qt DevDays 2009 - Munich
- Using Ext JS, Servlets, JSON, MySQL and Tomcat on Fedora
- Developing APIs for the Cloud
- Canonical Offers Free Cloudware
- New-Generation Virtualization Technologies with Ultra Low-Cost Endpoints
- The Planet Executive to Speak at Cloud Computing Conference
- Oracle-Sun: IBM Reportedly Behind Delay
- The Case for Single-Purpose Services
- IBM Puts Systems Chief on Leave of Absence
- Cloud BI & Amazon VPC
- Cloud-Oriented Switch Start-up Valued at $230M
- The Curious Case of Build Release Management eBook
- Amazon Web Services Database in the Cloud
- Tips for Efficient PaaS Application Design
- Reporting Solutions Using Crystal Reports for Eclipse
- SpringSource Moving to Spring 3.0
- Virtualization Expo Call for Papers Deadline December 15
- Un-Clouding Federal Security Compliance
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- The i-Technology Right Stuff
- Creating Web Applications with the Eclipse Web Tools Project
- Eclipse Special: Remote Debugging Tomcat & JBoss Apps with Eclipse
- The Next Programming Models, RIAs and Composite Applications
- Where Are RIA Technologies Headed in 2008?
- How to Bring Eclipse 3.1, J2SE 5.0, and Tomcat 5.0 Together
- SYS-CON Webcast: Eclipse IDE for Students, Useful Eclipse Tips & Tricks
- Eclipse: The Story of Web Tools Platform 0.7
- "Eclipse 3.0 is a Great Leap Forward," Says JDJ's Dudney
- Developing an Eclipse BIRT Report Item Extension
- The Top 250 Players in the Cloud Computing Ecosystem




























