Editor's Note

Under the Covers and Through the Words

There are some people who have little curiosity about the world around them. They drive to work without asking why their airbag light is on. They work all day, never once wondering why their computer goes through periods where it's slow as a snail. (It was because their IT department was pushing new virus definitions down to their machine.) Then they get home and settle in for a night of television—again, never wondering about the workings of the miracle that beams Hollywood's hottest stars onto a 35-inch screen in their living room.

But developers need to take an interest in how things work under the hood. That's not to say that only programmers care about things at the micro level—far from it. But the core of any development project is breaking a problem up into parts. Sometimes the parts can be reasonably large—concatenating two strings is a complex operation made simple by any decent string library. But sometimes you need to peel off even more layers to better understand how memory allocation works or how that string library operates.

This month, we've decided to peel away some of those layers. In "JIT and Run: Drill into .NET Framework Internals to See How the CLR Creates Runtime Objects" we take a look at how the JITing engine of the CLR works internally, and how it handles object layout and method dispatching. This isn't for beginners, but if you need to know what happens to your code when you run it, and don't get squeamish when you see a stack heap, this is for you.

On the next level up from the runtime, there is a new element of Visual Studio 2005—the Safe C and C++ Libraries. If you've been assuming that strcpy would provide your retirement income, think again. The fact that your code may be waiting for a null-terminated string that never terminates could leave your heap drained and your code bankrupt, to misuse just two analogies. The Safe Libraries are designed to provide stronger security by stopping buffer overrun attacks in their tracks, among other benefits.

Finally, we have interesting coverage of Windows Forms in the .NET Framework 2.0, a demonstration of how to build neural networks with .NET, and even a new column! Extreme ASP.NET is written by long-time ASP.NET designer and guru Rob Howard. In this first installment, Rob talks all about server controls and paging.

This month we have a special Editor's Note treat: a new section called "People Complaining About Previous Editor's Notes." It seems that we touched off a bit of discussion in March when we took issue with invented words like "performant." Some people were firmly behind our stance, while others rejoiced in the trashing of the English language in a quest to invent yet more words.

One dev in the Microsoft Mobile group, who will remain nameless because we accidentally deleted the e-mail, wrote:

Keyboardable. Need I say more?

Actually you do, because "Keyboardable." isn't a complete sentence. Dennis Voss filled us in from Germany:

I just wanted to point out that "performant" is a German word that can be translated to what you said ("highly performing"). And yes, it's an adjective, not a noun.

So the plot thickens. Not only are people using a word that's not a word, they didn't even make it up like they thought they did! David Knapman wrote to us from the UK:

Your first point of needing to create new words used the examples of boxing and unboxing. What was wrong with the words reference and de-reference?

At the risk of inconsistency, we're going to give "boxing" a pass because it sounds sort of cool. "De-reference" sounds like the act of taking something out of the dictionary—which is something you don't have to do with the word "performant," because it's not in there.

Finally, we heard from Dave Edson, who used to grace these pages as a technical editor for Microsoft Systems Journal. Dave wrote:

I wrote an ednote WayBackWhen where I got into a hissyness state of delusionism over the abundatage of bad words, including the word "nervousing". Ingesticate a chill pill and stop your plagiarizationism.

Sure, Dave talks a good game. But let's see him show up here and settle this issue where it counts, in meatspace.

—J.T.

Thanks to the following Microsoft technical experts for their help with this issue: Mark Boulter, Shawn Burke, Susan Chory, Kit George, Matthew Gibbs, Manish Godse, John Justice, Peter Kim, Ronald Laeremans, Steve Lasker, Gerrard Lindsay, Martyn Lovell, Jim Miller, Bradley Millington, Vance Morrison, Polita Paulus, Brian Pepin, Eric Perlin, Matt Powell, Joe Stegman, and Ted Tanner.

ActiveX, BizTalk, IntelliSense, JScript, Microsoft, MSDN, MSN, Microsoft Press, Visual Basic, Visual Studio, Windows, Windows NT, Win32, and Windows Server are either registered trademarks or trademarks of Microsoft Corporation. Other trademarks or tradenames mentioned herein are the property of their respective owners.

MSDN Magazine does not make any representation or warranty, express or implied with respect to any code or other information herein. MSDN Magazine disclaims any liability whatsoever for any use of such code or other information.