Click here to Skip to main content
Click here to Skip to main content

Tagged as

Interview with Chris Sells

, 29 Oct 2000 CPOL
Rate this:
Please Sign up or sign in to vote.
Chris Sells gives us his view on the world.

Chris Sells is currently the Director of Software Engineering at DevelopMentor, and has authored and co-authored numerous books and magazine articles, has spoken at various conferences, including WinSummit, WinDev, VCDC, SD, C++ World, MS Developer Days, MacWorld and ATL DevCon, and is also the author of Attila - the ATL for Applications library.

Read more about Chris at his home page.




Firstly - could you give us a brief rundown on who you are and what you do to keep yourself amused during the day.

I'm currently the Director of Software Engineering for DevelopMentor's new software division. We're building a product and just as importantly, we're building an understanding of what it means to build products in a reliable, predictable way. I've been writing books and giving talks on technology for years, and that's been great, but it's kept me out of the mainstream. For the last two years, I've been back down in the trenches and it's been a blast. On a daily basis, I code, design, document, beat back bugs, log bugs, test, hire, do tech support, give marketing presentations, read email, send email, hang on the mailing lists and try to leave a reasonable amount of time for my wife and kids (the Sells Brothers : ).

Secondly: How on Earth do you fit that all in? Books, articles, speeches, your website, ATL and Atilla lists are all kept going, plus your titanic efforts on Gen<X>. What's the secret?

I don't use caffine. Seriously. : ) Staying away from caffeine means that I have to be very into what I'm doing to get through the day and stay happy. As soon as I'm unhappy, I finish up and move on. So, while I've written books and articles and given conference talks and managed the Attila effort in the past, I'm not doing any of that right now. I do still post useful (I think) tidbits on my web site and I write the occassional article when the spirit moves me, but for the last two years I've dedicated myself almost exclusively to Gen<X>. The secret? Only make room in your life for those things you can't *not* do.

What do you see as the future of programming in 5 years time?

"Error: Can't 'lowerLandingGear' -- Garbage Collector is running."

20 years time?

"I'm afraid I can't do that, Dave."

What is it that got you into the IT world, and most importantly, what keeps you here?

Due to an extreme lack of control over my world as an obnoxious 12 year-old, I turned to something I could control -- a computer. Over the years, I've mellowed and now that people can stand me for more than 5 minutes at a time, I've found that the two things that keep me interested are the challenge and the need to help folks.

The need for challenge is what drove me through any number of impenetrable technologies culminating in COM (Jon Borden, an ex-brain surgeon, says that COM is harder : ), and then into writing, speaker, teaching and now, shipping a shrink-wrap product.

The need to help folks sets my focus when I write, teach, post on the lists, post on my web site, and now, shipping a shrink-wrap product. Since I never do anything I don't like for very long, unless programming is fun (and, for example, SAFEARRAYs *aren't* fun), why would I expect anyone else to do it? On the other hand, if I can make programming more fun, (e.g. CComVector), people's lives are improved and that makes me happy. I can't tell you how great it is to have somebody thank me for some article or some hunk of code from my website, because it means I've helped them.

The obligatory .NET question: So whaddya think of .NET?

Multi-language Java that acknowledges the platform.

C#?

Java with enums.

What is the future of scripting in .NET?

Scripting is one of the coolest potential uses for .NET. Having a JIT and a runtime just makes C++ slower (although arguably safer). However, that same JIT and runtime can make scripting languages fly. Not only are VBScript and JScript going to go much faster because now they're going to be running in native code instead of being interpreted, but *anything* can generate IL on the fly and feed it to the runtime. This makes things like executing regular expressions much faster, because the regex parser can feed IL to the runtime and let it do the heavy lifting. I haven't heard anyone from MS talk about the script hosting strategy for .NET, but they've laid all the groundwork to make it killer.

DevelopMentor are traditionally involved in training and education for developers - but what's with these rumours that you are now in the software business?

Sometime in November, DM will be shipping its first software product, so I guess the rumors are true. Smile | :)

What are you guys building?

Gen<X> is a tool for generalizing and replicating code. I found that I wanted to write language-independent code templates and drive the code creation based on metadata. This freed me from manually translating project requirements into code and allowed me to re-create the code automatically when the templates or the project metadata chanced. It turned out that I wasn't the only one that wanted to do this, so we decided to turn it into a product. The details are available at http://www.develop.com/genx. Also, check out the "Future of Software Engineering" issue of the Visual C++ Developer's journal for an essay about the benefits of the technique that Gen<X> implements.

On a personal note, I'm excited about Gen<X> because it represents the culmination of years of thinking about how to represent ideas and how to turn them into code. On the other hand, it suddenly opens me up for all of the ridicule and criticism that I've been heaping on Microsoft for years, so I'm a bit apprehensive as well. Be gentle. : )

You have some kind of patent on Telephone technology (US5471522)? I'd be really curious to hear about what that entailed, and your impression of the whole patent filing process.

The patent was all about how to tell the type of the incoming call, i.e. voice, data or fax. What made it harder was that US law at the time (and maybe still to this day, happily I've left telephony long in my past) made it illegial to listen for anything on the line *until* the phone was answered, so we had to pick up the phone to listen for the fax tone. The other twist was that outgoing data calls don't even have a tone, so how do you tell voice from data? Once we figured out the kind of call, we wanted to be able to decide whether to answer it via the Windows Telephony API (Intel was developing it at the time). Of course, since we had to answer the call to tell whether to answer it, our algorithm wasn't worth much more than the patent itself (which hangs proudly on a plaque at the bottom of a closet).

I have mixed feelings about the patenting process. On the one hand, I like to publish my ideas and have other people benefit from them. Likewise, I like to hear others' ideas and "leverage" them as necessary. On the other hand, I want other companies to pay my company money so that I might feed my family. Do I think the whole system needs an overhaul? I do. Until then, DM files patents on our unique technology so that we can be better able to compete.

Another of your creations - Attila - is extremely popular among developers. With WTL up in the air, what is the future of Attila? Will it coexist with (or use) WTL?

Attila was built because we didn't have WTL. Now that we do, I'm working with Nenad to add any of the good ideas from Attila into WTL, with the idea that the community only needs the one Windowing add-on to ATL.

I don't think WTL is so much up in the air. Nenad has made it pretty clear that he'll fight tooth and nail to keep WTL shipping in the PSDK and so far, despite very public statements from middle management at MS, he's managed to do just that. We use WTL to build all of our stand-along apps and we like it. We'd like to see more IDE integration and more features, but isn't that always the case?

ATL Internals is one of the ATL Bibles.

Thanks! Brent and I worked hard to make it so.

What new technologies will be appearing in the next version of your book - WTL, ATL Server, attributes, Windows CE issues?

Brent and I have gone back and forth about updating ATL Internals. Frankly, I don't know if there's enough new in ATL7 to warrant a 2ed of ATL Internals. We could have a number of chapters on WTL, but unless MS supports it, there aren't ever going to be many WTL users and the ones there are don't really need the book. On the other hand, I'd sure like there to be enough new in ATL to warrant an update of the book. Please write your local congressman. : )

Has your style of coding changed in recent years, and are there any tips or tricks that (large or small) have made a difference to you in recent years?

The single biggest thing that's changed about my coding style in the last few years is the control flow. I used to do just what Steve Maguire said in Writing Solid Code, which was to write the nominal case first, e.g.

HRESULT Foo()
{
	CComPtr<IUnknown>	spunk;
	HRESULT	hr = spunk.CoCreateInstance(L"Microsoft.Excel");
	if( SUCCEEDED(hr) )
	{
		CComPtr<IDispatch>	spdisp;
		hr = spunk->QueryInterface(&spdisp);
		if( SUCCEEDED(hr) )
		{
			...
		}
	}

	return hr;
}

With COM, that quickly became too much indentation and I began to disagree in principle with Steve anyway, so now I write my code to bail early on errors, like so:

HRESULT Foo()
{
	CComPtr<IUnknown>	spunk;
	HRESULT	hr = spunk.CoCreateInstance(L"Microsoft.Excel");
	if( FAILED(hr) ) return hr;

	CComPtr<IDispatch>	spdisp;
	hr = spunk->QueryInterface(&spdisp);
	if( FAILED(hr) ) return hr;

	...

	return S_OK;
}

With smart types, all the clean-up happens the way I want in either style, but my way, I can use the columns on the left of my text file and I think things are much more readable.

Chris Sells
http://staff.develop.com/csells

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Chris Maunder
Founder CodeProject
Canada Canada
Chris is the Co-founder, Administrator, Architect, Chief Editor and Shameless Hack who wrote and runs The Code Project. He's been programming since 1988 while pretending to be, in various guises, an astrophysicist, mathematician, physicist, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a web developer. He is a Microsoft Visual C++ MVP both globally and for Canada locally.
 
His programming experience includes C/C++, C#, SQL, MFC, ASP, ASP.NET, and far, far too much FORTRAN. He has worked on PocketPCs, AIX mainframes, Sun workstations, and a CRAY YMP C90 behemoth but finds notebooks take up less desk space.
 
He dodges, he weaves, and he never gets enough sleep. He is kind to small animals.
 
Chris was born and bred in Australia but splits his time between Toronto and Melbourne, depending on the weather. For relaxation he is into road cycling, snowboarding, rock climbing, and storm chasing.
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

 
GeneralChris your c# book is amazing! PinsussFocusedWolf24-Sep-04 9:20 
GeneralBTW, there's a ton of new web stuff in ATL7 PinsussChris Sells2-Nov-00 15:59 
GeneralWell done PinsussDavid Cunningham30-Oct-00 18:21 
GeneralRe: Well done PinsussChris Sells1-Nov-00 17:10 
GeneralChris PinsussCraig Andera30-Oct-00 15:33 
GeneralRe: Chris PinsussChris Sells1-Nov-00 17:10 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150327.1 | Last Updated 30 Oct 2000
Article Copyright 2000 by Chris Maunder
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid