Marquee de Sells: Chris's insight outlet via ATOM 1.0 csells on twitter

You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.




I Like Clocks

Ron Neely sends his favorites:

0 comments




A Little Slice of Time

Chris Sells
Feb 2, 2002 8:02pm

0 comments




A Visit with the Visual C++ Team

I spent a fun two days up at Microsoft last week at the Visual Studio .NET C++ Authors Summit, wherein the Microsoft team shows us how cool VS.NET is for C++ and browbeat us to write a book on the topic. Since I'm already planning to write ATL Internals, 2/e with Kirk Fertitta, I couldn't talk them out of the XBox I so richly deserve. On top of that, they tortured me by taking me to the Microsoft store where they have XBox games for only $10! Those bastards...

If you're a C++ programmer, VS.NET/VC7 brings a lot to the table. And according to Nick Hodapp, a PM on the VC team at Microsoft, many, many of you are C++ programmers. Microsoft quoted some 3rd party studies that say that there are about 3M C++ programmers out there (compared to 5M VB programmers and a whole lot less Java programmers). From a 3rd party survey of VC++ customers, Microsoft found that 90% (!) of them will be doing the same or more VC++ work in the future (about 22 hours/week). They also found that about 75% of VC++ users are MFC programmers (which isn't growing) and 35% of them are ATL programmers (and is growing). Given the number of ATL7 books shipping right now or in progress (ours and a few more), and the increase in the audience, that made Kirk, my Addison-Wesley editor and me very, very happy.

Here are some other interesting tidbits from that survey for you:

While we were there, various members of the VC++ team attempted to rock our world in terms of the new and improved features VC7. Sometimes they succeeded. For example, Pranish Kumar told us how the ATL Server version of the Nile benchmark web application was 10% faster than the hand-turned ISAPI version in 1/4th the development time, which is why the Microsoft site uses it for some of their "through-put challenged" areas. Also, Terry Leeper showed us how make mini-dumps for VC++ projects that you can send to the developer's who persist in saying "but it works on my machine..." He also showed us how you can pause threads during debugging, load symbols on demand, set breakpoints in DLLs that aren't loaded at start-up (without that annoying dialog box) and just how much the new optimization features can speed up your code (they did an amazing demo with a recompiled Microsoft codedec that nearly doubled the frame rate with no code changes).

For those of you into ANSI compliance, Microsoft showed off an early internal build of their compiler that raises VC's over all compliance rating to among the highest in the industry. They are able to compile all of the popular 3rd party template libraries, e.g. Loki, Boost, Blitz++, POOMA and a complete STL.

0 comments




Welcome to Wahoo!

This page is dedicated to the game of Wahoo! -- a .NET application meant to be invoked from a .NET client across the internet.

If you'd like the ClickOnce version (for .NET 2.0), click here and (after clicking a few more times), an application that looks like the picture on the right will appear.

To invoke the No-Touch Version version (for .NET 1.x), click here and wait a little while. In a few seconds, an application that looks like the picture on the right will appear. You should note that No-Touch Deployed applications deployed across the Internet are disabled by default when .NET 2.0 is installed on the client machine.

If you find that Wahoo! doesn't have permission to run on your .NET 1.x computer, you can grant Wahoo! Internet permissions using this MSI setup file (Keith Brown helped me fix my SP1 permissions problem!). Even the new permissions are pretty strict, e.g. they do not even allow writing to the file system. If you'd like to increase the permissions allows for Wahoo! so that it can cache high scores to the file system, you can do so via the Trust Assembly Wizard available in Start->Settings->Control Panel->Administration Tools->Microsoft .NET Framework Wizards.

Keith Brown has asked me to remind all of you that even though Wahoo! is managed and executes in the .NET security sandbox, the code in the MSI to grant permissions for the .NET 1.0x version is running with FullTrust permissions, meaning that it could do bad things, where "bad things" is defined as: trash the registry, delete files, send email from your account, spread viruses, reformat disks, change arbitrary spreadsheet values or formulae, remove single columns from database tables, invert the buttons on your mouse, reset your MineSweeper high scores, send lists of installed software to Microsoft, and generally misbehave (thanks Tim Ewald for the exhaustive list : ). Of course, this applies to any MSI file, setup program or any other code that you download onto your machine and run outside of the .NET or Win32 security sandboxes. Keith would like everyone to promise to stop installing new code of any kind on their machines and let software migrate there instead, either via No-Touch Deployment/mobile code-style install-on-demand or via administrator-approved means. Keith believes that installing code on your machine can only cause trouble and I agree -- unless there is code on your machine, nothing bad can happen. Nothing good can happen, either, but "Hey, let's be careful out there!"

The full source code to the .NET 2.0 version is available here. The full source code to the .NET 1.x version (including the MSI file) is available here. The original HTML version is available, as well.

Wahoo! was awarded the Windows Forms Coding Heroes Award on 2/12/02 by the Windows Forms team on GotDotNet. I'd like to thank the academy... : )

If you like this game, you might also like Snake, by Tomas Gudmundsson. I know I do.

0 comments




The Game of Wahoo!

If you like Tetris and you've got .NET installed, check out Wahoo.

0 comments




VS.NET Fun Facts

After about a month of banging my head on it, Visual Studio.NET has become my favorite IDE of all time. To save you the bruising, I thought I'd post some productivity tricks and traps I've learned [1] that make VS.NET useful. If you've got your own, send them to me and I'll post the good ones.

DISCLAIMER: I always leave the standard VS.NET key bindings, i.e. I don't set it to VC6 style. In general, I just learn the default keystrokes for things instead of changing them. Saves me time when repaving my machines or sitting down at strange machines. If you've changed key bindings in your VS.NET, these keystrokes aren't likely to work, but the tricks will still be useful if you can figure out what the key bindings are.

Download

If you don't already have VS.NET, run, don't walk, to MSDN to download a 60-day evaluation of VS.NET Professional.

Tricks

Traps

[1] I've learned a ton of these tricks and traps from my fellow DevelopMentor instructors, my students and the .NET mailing list, all of which I can heartily recommend.

0 comments




VS.NET Fun Facts

If you haven't seen it yet, check out the VS.NET Fun Facts piece that started as praise and bitching about VS.NET, but turned into something pretty useful if you'd like to get the most out of VS.NET.

0 comments




My Family Heritage

Grandma says that all US Sells are related from the original Sells that came across on the boat after the May Flower.

My father pointed out that my boys are not, in fact, the original Sells Brothers (and that we must be related, as the originals have his haircut).

0 comments




Elvish in the New Age

TimT said:

od oy dp,ryjomh ;olr yjodz
[d. dpttu. gomhrtd pm yjr etpmh lrud
//yo,

SerdarK said:

Is that Elfish?

ShawnV said:

I think it *is* elvish... let me put my laptop in the fire. Ah yes, I can read it clearly now:

One Desktop to rule them all, One Desktop to find them
One Desktop to bring them all, and in the darkness bind them
in the land of Redmond, where the shadows lie

Off Topic mailing list

0 comments




1970s "wocka-wocka" porno guitar

Sung to "Shaft" by Isaac Hayes <http://www.shaft-themovie.com/soundtrack/track01.mp3>

Who's the man with tongue-in-cheek
that's a code machine to all the geeks?

(Box!)

You're damn right.
Who is the man
that would replace COM for its brother runtime?

(Box!)

Can ya dig it?
Who's the cat that won't cop out
when there's IDispatch all about

(Box!)

Right on
You see this cat Box is a bad mother--

(Shut your mouth)

But I'm talkin' about Box

(Then we can dig it)

He's a complicated man
but no one understands him but his pointers

(Don Box)

John Bristowe
Wed 12/19/2001 2:02 PM
dotnet discussion [DOTNET@DISCUSS.DEVELOP.COM]

0 comments




Too Many Secrets

Tue, 12/18/01

During my three years as director of a software project, I learned a lot about people. In fact, I have a little text file entitled "My life as a dog" that may find a home on this site one day. However, because of a thread on the Windows Technical Off Topic list, one of the things I learned came roaring back like a bad acid trip.

The #1 problem with any organization is always communication. You can do postmortems on projects all day long and only #2 and above will be a surprise. The problem is that to build anything of any size, you need a team. As soon as you have to communicate what's in your head to some number of other people, it's going to happen imperfectly. The best way that we've been able to come up with to deal with this issue is hierarchical structures to practice selective information hiding, i.e. exactly the way we build software.

However, unlike software, humans have feelings and as soon as they perceive that somebody is hiding something from them, they resent it. Again and again, when I see information withheld to hide "bad" news, those being hidden from know something is up and they get upset. And when they're upset, they send emails and IMs and phone calls around the company looking for every scrap of information they can find, all the while ignoring the work that suddenly seems a waste of time in the face of impending doom. The surprising thing is that when folks are given the truth openly and honestly, no matter how bad it is, they almost always dig in and deal with it. Just knowing that they're trusted with the secrets of the company seems to boost morale.

I'm not saying that everyone needs to post their daily activities for everyone to see -- that's too much information. But I am saying that everyone from the CEO on down should be open about the issues they face, including being open to scrutiny and suggestions. I find that after doing that long enough, folks working for me tend to trust me to make the right decisions, leaving them to focus on their own work.

The key is that, unlike software systems where components have information hidden from them by their clients, humans can only be effective if they know that the information is available when they want it. Information hiding still needs to happen, but it's humans that need to choose to hide information from themselves. It whole thing falls apart if the managers do the hiding.

0 comments




Effective C# Available Today

Sat, 12/1/01

Effective C# is available now from Addison-Wesley. Of course, it's called Effective Java, but *wow* the overlap is amazing. Some of his items I don't agree with, e.g. return zero-length arrays instead of null (although I see his side) and others have been "fixed" due to advances in C#, e.g. override clone judiciously, but so much of it makes sense in C# (and .NET in general) that it's scary. I feel like asking AW for the text so that I can port it to C# over the weekend. : )

0 comments




I am not making this up...

A friend of mine stumbled over this in the Microsoft source code:

//  Function:   RunCommandEx
//  Synopsis:   runs the given command in the current session, more robust
//				than RunCommand
//  Arguments:  none
//  Returns:    S_OK if success
//  History:    October 3, 2000 - created [name withheld to protect the guilty]
HRESULT RunCommandEx(LPCWSTR szCmdLine) {
	DWORD dwTry = 0;
	HRESULT hResult = S_OK;

	// try run command 3 times at most
	while (dwTry<4) {
		hResult = RunCommand(szCmdLine);
		if (hResult!=E_FAIL) {
			// we succeeded
			break;
		}
		dwTry++;
	}
	if (dwTry==4) {
		ATLTRACE(L"COuld start the command even we tried 4 times\n");
		ASSERT(FALSE);
	}
	return hResult;
}

That's not quite my definition of robust, but oh well...

Tue 11/27/2001 3:52 PM

0 comments




.NET edition of Truckin' (Grateful Dead)

"Steal this song right off my page." You can find it at http://www.ferncrk.com/jittin.html. Use only in well ventilated area. Do not expose to open flame.

Stuart Celarier
Tue 11/27/2001 3:41 PM

0 comments




Thank You, Don Box

Friday, 11/16/01

Last night, in the middle of .NET Band on the Runtime set, Don announced his retirement from DevelopMentor and training. He's sorry to be leaving us, of course, as we are to lose him, but he's excited about doing new things. Running a company gets more consuming as a company gets more successful and Don certainly brought DevelopMentor a great deal of success. And not only did he run his part of the company, but he also brought a amount of rigor and insight to an amazing range of technology topics, including C++, COM, DCOM, RPC, XML, Java and .NET, heretofore unprecedented in the training industry. He turned the phrase "them that can't; teach" on its ear. But these are things that are well-known of Don.

What is perhaps not so well known is the care and dedication that he had for his friends and colleagues. He worked hard to turn his personal success into opportunities for the other technical staff members at DevelopMentor. And he succeeded. He paved the way for people like Ted Pattison, Keith Brown, Tim Ewald, Aaron Skonnard, Martin Gudgin and a host of others who's made a name for themselves in this industry. Of course, I'm also on this list. If you look at the things that I've got listed on this site, i.e. books, articles, courses, conference talks, etc, a staggering amount of it was enabled either directly or indirectly by Don Box. He's an amazing man and it's been an honor and a privilege to work with him these last six years. They're been the richest of my career and of my life. And for that, I'd like to thank him.

Before we get too blubbery, Don has assured the world that he will continue to pursue technology and to communicate it to an eager audience. I, for one, look forward to what he decides to do next. Whatever it is, I'm sure it will be uniquely Don.

0 comments




85 older posts       2550 newer posts