Adam Nathan's Old Blog

Please visit http://adamnathan.net instead!

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 the author of WPF Unleashed.NET and COM: The Complete Interoperability Guide, plus a co-author of ASP.NET: Tips, Tutorials, and Code, and a contributor to .NET Framework Standard Library Annotated Reference, Vol. 2.  I'm currently working on a new book, so stay tuned!

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.

  • Adam Nathan's Old Blog

    XAMLshare web service

    • 0 Comments
    A reader who goes by the name of "DarkByte" asked me: Does XAMLShare have a webservice to query for submitted content? Great idea! I had not enabled it, but I have now: http://www.xamlshare.com/editservice.asmx This is the default FlexWiki Web...
  • Adam Nathan's Old Blog

    Avalon Beta 1 RC Breaking Changes

    • 8 Comments
    Breaking changes are a fact of life when living on the bleeding edge of betas and CTPs, especially for technologies like Avalon and Indigo which haven't officially shipped yet. There have been lots of changes between the March CTP and Beta 1 RC, and there...
  • Adam Nathan's Old Blog

    Going to TechEd

    • 2 Comments
    I didn't think I was going this year, but plans have changed! You should able to find me at the cabanas or the Developer Tools booths in the Microsoft Pavilion. See you in Orlando!
  • Adam Nathan's Old Blog

    Avalon Beta 1 RC: What's New Since March?

    • 1 Comments
    Tim posted a great document that describes the major additions to Avalon you'll see in the Beta 1 RC bits. I like the promise of being able to recompile your source code on "final Beta 1" with no changes! :) Here's a quick summary of what's new: ...
  • Adam Nathan's Old Blog

    Now available: Beta 1 RC of Avalon and Indigo

    • 9 Comments
    I'm happy to say that the Beta 1 RC of Avalon & Indigo is now available here . This version is compatible with Visual Studio 2005 Beta 2! As promised, I've updated my XAML playing cards sample here , and I've updated the two pages on XAMLshare...
  • Adam Nathan's Old Blog

    A new XAML wiki: XAMLshare.com

    • 11 Comments
    Could wikis be the solution to all the world's problems? Probably not, but I've created another one anyway. It's called XAMLshare . I'm starting to see folks share XAML samples on their blogs (myself included), and thought, "Wouldn't it be nice to...
  • Adam Nathan's Old Blog

    When creating XAML by hand isn't feasible

    • 5 Comments
    In my previous XAML-related post , Mike asked about my conversion from SVG to XAML. I know of two such programs that help with this (and I see Will also listed them in a comment): XAMLConverter from Xamlon, which is currently in sync with the March...
  • Adam Nathan's Old Blog

    pinvoke.net is one year old!

    • 1 Comments
    In a recent meeting, I got the opportunity to meet Ward Cunningham , David Ornstein , and Korby Parnell . Naturally, afterwards I had wikis on the brain. They (not intentionally) made me feel guilty about pinvoke.net being on such an old version of FlexWiki...
  • Adam Nathan's Old Blog

    XAML Playing Cards

    • 37 Comments
    Looking at the card games that ship with Windows XP, I think one of the most obvious opportunities for improvement is the look & feel of the playing cards. These games use a shared library known as cards.dll to draw cards that look like... um... this...
  • Adam Nathan's Old Blog

    Migrating Internet Hearts to WinFX

    • 14 Comments
    Last year, Chris Sells wrote a series of articles in which he set out to rewrite Solitaire using Avalon. The lack of scaling graphics in the Win32 version (and lack of access to its source code, I suppose) forced him down the road of rewriting the app...
  • Adam Nathan's Old Blog

    .NET Framework 2.0 and app compat

    • 1 Comments
    Jason Zander , head of the CLR, does a great job explaining application compatibility issues that the team is focused on. I'm curious to hear about managed apps and components that have been released, whether they're " 100% managed code " or even 1% managed...
  • Adam Nathan's Old Blog

    A new job

    • 5 Comments
    When I joined Microsoft and the CLR team (then known as the COM+ 2.0 or "COM+ Confidential" team) in 1999, I was one of 3 test developers (SDET in Microsoft-speak) for COM Interoperability. During this time is when I got married and wrote my Interop book...
  • Adam Nathan's Old Blog

    Help us help you!

    • 3 Comments
    [Update: This program is no longer available.] Do you write managed apps or components? Then you should run them on a special edition of the .NET Framework 2.0 Beta 1 . With this, you can now give Microsoft direct feedback on what portions of the ...
  • Adam Nathan's Old Blog

    'Introducing' PINVOKE.NET and its Visual Studio Add-In!

    • 79 Comments
    I guess I'm not cut out to be a journalist. Two weeks ago when I decided to spend my weekend creating the PINVOKE.NET wiki, I had a great opportunity to awaken my blog from its deep slumber by announcing it to the world. But Ben , Brad , Brian...
  • Adam Nathan's Old Blog

    CLR SPY: Feature requests for the next version

    • 16 Comments
    Now that I'm set up at my new blogging home, I'd like to get some feedback from anyone who has used the CLR SPY tool that I've uploaded to gotdotnet.com and blogged a lot about in the past. We're investigating shipping the tool in the .NET Framework...
  • Adam Nathan's Old Blog

    An Overview of Managed/Unmanaged Code Interoperability

    • 7 Comments
    I promised I'd post this link on my blog. PDC attendees can also find it on their Longhorn DVD (Disk #2). It's a document called "The Developer's Guide to Migration and Interoperability in Longhorn: Alpha Patterns and Practices".
  • Adam Nathan's Old Blog

    IsManaged

    • 4 Comments
    I'm about to catch my flight for the PDC, but I wanted to archive the following before I go: In one of our session 's demos on Tuesday, I'll be briefly mentioning C# code that determines whether a given file is a managed or unmanaged binary by inspecting...
  • Adam Nathan's Old Blog

    PDC Book Signing and Book Giveaway!

    • 8 Comments
    If you're going to the PDC, and if you needed more incentive to attend Sonja's and my session - Managed/Native Interop Best Practices and Common Pitfalls (That We Learned the Hard Way) - then look no further! During our session, we'll be...
  • Adam Nathan's Old Blog

    GUID Generation and VB6 Binary Compatibility

    • 54 Comments
    When exposing managed types as COM types, your classes must have CLSIDs, your interfaces must have IIDs, and so on. System.Runtime.InteropServices provides a custom attribute (GuidAttribute) that enables you to be explicit about these GUIDs. But the CLR...
  • Adam Nathan's Old Blog

    Tech License Plates

    • 38 Comments
    Many people know about Don 's infamous IUNKNWN and INFOSET license plates, but recently I've been noticing more technology-inspired license plates around town.  Just the other day at the grocery store, I saw a car with a GUID license plate...
  • Adam Nathan's Old Blog

    CLR SPY and Customer Debug Probes: The QueryInterface Failure Probe

    • 8 Comments
    It has taken awhile, but with this entry I will have described all 11 probes that exist in v1.1 of the CLR. When an RCW queries its underlying COM object for a specific interface, the QueryInterface call could fail for a variety of reasons. The QueryInterface...
  • Adam Nathan's Old Blog

    Suggestions for future CDPs?

    • 15 Comments
    In my next blog entry, I'll explain the 11th and final Customer Debug Probe (CDP) that exists in the v1.1 product. But for the next version of the product (code-named Whidbey), we're looking at adding additional probes, and not just in the area of Interop...
  • Adam Nathan's Old Blog

    Quiz: Searching in a managed array

    • 15 Comments
    Sorry for my recent lack of blogging. There's been a lot going on these days! As the banner on my blog now indicates, you'll be able to catch me at two upcoming conferences. As with TechEd in June, Sonja Keserovic and I will be giving an Interop presentation...
  • Adam Nathan's Old Blog

    CLR SPY and Customer Debug Probes: The Thread Changing Apartment State Probe

    • 16 Comments
    The last blog touched on apartment states of managed threads, which the CLR tracks for COM interoperability purposes. But if an application changes the apartment state of a thread being tracked by the CLR (via unmanaged code or direct calls to CoUninitialize...
  • Adam Nathan's Old Blog

    Gotcha with STAThreadAttribute and Managed C++

    • 8 Comments
    Managed thread objects have an ApartmentState property that can be set to STA or MTA. But setting this property on the main thread doesn't work reliably because the CLR might set the apartment state to MTA (by calling CoInitializeEx (NULL, COINIT_MULTITHREADED...
Page 4 of 5 (119 items) 12345