June, 2003

Blog - About

Who is Adam Nathan?

I'm not Adam Nathan the actor, although I did make an uncredited appearance as a "close-up extra" in the 1988 flop known as Tiger Warsaw because it was filmed in my home town. (In fact, the Buhl Mansion mentioned on IMDb is where I got married!)

I'm also not Adam Nathan the pop star, because although I tried out for American Idol, I didn't make the cut. :)

Instead, I'm Adam Nathan the Software Design Engineer at Microsoft. I'm created the prototype for what has become Microsoft Popfly, and am still on the team, loving every minute of it! Prior to that, I was a member of the Common Language Runtime team for 6 years, so I got the privilege of being at the core of .NET technologies since the very beginning.

I'm also the creator of www.pinvoke.net and its Visual Studio add-in, an online community-driven repository of PInvoke signatures that helps developers migrate to managed code. I've also created the CLR SPY tool that opens the lid of the Common Language Runtime "black box" and enables developers to find and diagnose bugs in their managed code. I've also recently put together www.xamlshare.com, a wiki meant for sharing XAML samples.

I'm a regular speaker on the topic of managed code, interoperability, and WinFX. I graduated from Cornell University with an honors B.S. degree in Computer Science.

The most common mistake made when passing a delegate to unmanaged code (marshaled as a function pointer) is to allow the delegate to be garbage collected before unmanaged code is finished using it. This can happen because unmanaged code is invisible to...

The C# code below, when executed, prints the following:
0x80004002
0x80004002
Who can figure out why the second line printed isn't 0x80004003 ?
using System;
using System.Runtime.InteropServices;
public class Quiz
{
const int...

The Object Not Kept Alive and Buffer Overrun probes are unlike any other CDPs, because they do not output any messages to report bugs in your code. Instead, they change general CLR behavior with the goal of forcing non-deterministic bugs that can be almost...

I'll be doing a book signing (for .NET
and COM: The Complete Interoperability Guide ) at the TechEd Mall tomorrow (Wed.
6/4) from 11:30-12:30 - immediately after the Interop presentation. If you're
at TechEd, please stop by!