Books & Magazines
- 2012
-
JavaScript: Building and Using Controls in Windows Store Apps with JavaScript
This one was adapted from the Win8 JavaScript book Brandon and I were writing, and it was my last piece for MSDN Magazine.
-
JavaScript: Data Binding in a Windows Store App with JavaScript
If you look closely at the sample data, one of the people is a 42-year-old Chris whose favorite color is blue.
-
Building Windows 8 Apps in JavaScriptWe printed and bound the first chapter for TechEd 2012 so we could hand out signed copies months before the book was done.
- 2010
-
OData and AtomPub: Building an AtomPub Server Using WCF Data Services
The sample is sellsbrothers.com itself. I needed full AtomPub support so I could post from Windows Live Writer.
-
OData by Example (Open Data Protocol by Example)
In a web-based world, OData is the data access API you need to know. Also, my first sentence spells CRUD as “Create, Read, Update and Read.” Oops.
- 2009
-
“Oslo” Basics: Build Metadata-Based Applications With The “Oslo” Platform
I wrote it while spending a great deal of time in Mr. Epl mode inside Intellipad, and one of its headings shipped as “Olso.”
- 2008
-
C# 3.0 Annotated ReferenceI just did some annotations in this one. It was the first annotated edition of the C# spec, and I was one of the nine annotators.
-
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2eI just did some annotations in this one. In one of them I told the authors a guideline “should really be a DO, not a CONSIDER.”
- 2007
-
Programming WPF, 2edNeither Ian nor I had any fixes for the second printing. So, it’s official — the book is perfect! : )
- 2006
-
Smart Clients: Craft A Rich UI For Your .NET App With Enhanced Windows Forms Support
Windows Forms 2.0 added 446 new public types and didn’t remove a single one. That’s one major release.
-
Windows Forms 2.0 ProgrammingI took my boys on a red-eye to Ann Arbor to watch it being printed. The first thing we saw was a big basket of the rejected bits of my book.
-
Dazzling Graphics: Top Ten UI Development Breakthroughs In Windows Presentation Foundation
MSDN Magazine doesn’t let the authors pick the titles. What Ian and I had in mind was 10 things that would surprise you when learning WPF.
- 2005
-
Programming Windows Presentation Foundation: Beta EditionIt sold out at PDC 2005, and then it sold out again when they brought more.
-
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET LibrariesI just did some annotations in this one. It won a Jolt award, so I’m counting that as mine, too. : )
-
ATL Internals, 2eIt took four writers and three years to finish, and Chris Tavares is the one who finally got it over the finish line.
-
Draft a Rich UI: Ground Rules for Building Enhanced Windows Forms Support into Your .NET App
Mike and I noticed that Visual Basic spent a little more time at the code-trimming gym than C#.
- 2004
-
More Avalon Data Binding Craziness
The last Longhorn Foghorn, where Longhorn Solitaire finally got style selectors.
-
Still Crazy After All These Bindings
Namita Gupta ran Avalon data binding and still answered all of my newbie questions, even after three years on it.
-
Crazy About Avalon Data Binding
The title comes from Mark Boulter: “Anyone using Avalon would have to be crazy to not use data binding.”
-
.NET Framework 2.0: Craft a Rich UI for Your .NET App with Enhanced Windows Forms Support
Code junkies may be disheartened by how much less code they had to write, while the rest of us got more time for Battlestar Galactica reruns.
-
Another Step Down the Longhorn Road
This is where my Longhorn Solitaire started to look something like Sol is supposed to look.
-
A Journey of a Thousand Miles
I start up Solitaire when I drift out of a meeting, and on my new laptop the cards were too small. So I rebuilt it on Longhorn.
- 2003
-
Creating Document-Centric Applications in Windows Forms, Part 3
My last Wonders of Windows Forms column. The next month I handed it to Mike Weinhardt.
-
Living La Vida Longhorn
It opens with my 70-year-old grandmother asking if she needed Windows 95, even though she didn’t have a computer.
-
Creating Document-Centric Applications in Windows Forms, Part 2
This series really belonged as a chapter in my WinForms book, but my publisher was anxious for me to stop writing.
-
Windows Forms Programming in Visual Basic.NETAlan Cooper, the Father of VB, wrote a foreword, and that same summer he gave me my first flying lesson in his plane.
-
Creating Document-Centric Applications in Windows Forms, Part 1
I built the sample to check a mutual fund’s 24.91% return, then realized the numbers were deltas from the S&P 500. But that just makes me look silly, so let’s focus on other things.
-
Windows Forms Programming in C#It was the #1 seller in its category, even beating Petzold, whose book I learned Windows programming from. That made me damn proud.
-
Mastering Visual Studio .NETIt should’ve been a Visual Studio Hacks book, but this was before the Hacks format was invented.
-
Essential .NET: The Common Language RuntimeIt hit #226 on Amazon, better than any of my own books that year, but I didn’t write any of that… : )
-
Visual Studio .NET: Building Windows Forms Controls and Components with Rich Design-Time Features, Part 2
Part 2 picks the clock control sample back up with TypeConverters, UITypeEditors and Designers.
-
Launching No-Touch Deployment Applications with Command Line Arguments
Easily one of the questions I got asked the most, and the answer was nearly undocumented.
-
Visual Studio .NET: Building Windows Forms Controls and Components with Rich Design-Time Features
This was my first piece with Mike Weinhardt. Nine months later I handed him my Wonders of Windows Forms column.
-
Windows Forms: .NET Framework 1.1 Provides Expanded Namespace, Security, and Language Support for Your Projects
Version 1.1 was supposed to be a bug-fix release, but Windows Forms still picked up 48 additions, 14 removals and no breaking changes.
-
Microsoft .NET Framework Resource Basics
A reader wrote to say the MSDN docs on resources were confusing, but this one cleared it up.
-
Safe, Simple Multithreading in Windows Forms, Part 3
I thought I’d said it all in parts 1 and 2, but I still had a little more in me. Like a dog with a bone.
- 2002
-
C++ and ATL: Use ATL Server Classes to Expose Your Unmanaged C++ Code as an XML Web Service
This is really Kirk’s baby, I just helped get it dressed for public display. : )
-
Windows Forms Layout
After all those heavy threading and security pieces, I went back to basics.
-
Increasing Permissions for Web-Deployed Windows Forms Applications
My demo resets your Mine Sweeper high scores from a URL and .NET stops it. The audience is happy for about three seconds, and then they ask how to get around it.
-
Visual Studio .NET: Top Ten Cool Features of Visual Studio .NET Help You Go From Geek to Guru
Jon and I did it as a top ten list in honor of Dave Edson’s Letterman-style lists in MSJ, which we read religiously when we were knee-high to a 16-bit window.
-
A Second Look at Windows Forms Multithreading
I added a Cancel button for folks who decide they need 1,000,001 digits of pi after mistakenly asking for only 1,000,000.
-
Scripting and .NET: Visual Studio for Applications Provides Customized Scripting Facilities for Your .NET Project
It opens with me playing DOOM again, front to back. At least your customers probably don’t send you e-mail saying “d00d ur $oftwarz roolz!”
-
.NET Zero Deployment: Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients
The demo is my game Wahoo!, and any similarity to other very popular games is purely intentional. Also, that title rolls right off the tongue, don’t you think?
-
Safe, Simple Multithreading in Windows Forms
System.Math.PI only has 20 digits and I really needed 21, so I forgot about the problem I was actually trying to solve and wrote a program to calculate pi.
-
State Sanity Using Smart Clients
The first Wonders of Windows Forms column, arguing that Web apps are a poor imitation of rich clients. A year later, at my first talk as a Microsoft employee, the audience wasn’t biting.
-
AOP: Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse
Our opening line: “I blame Lego.”
- 2001
-
Generative Programming: Modern Techniques to Automate Repetitive Programming Tasks
I wrote it as the inventor of Gen<X>, DevelopMentor’s code generator. Years later I’d say I’m not a big codegen fan, in spite of my previous dealings. : )
-
Visual Studio .NET: Managed Extensions Bring .NET CLR Support to C++
My first piece for MSDN Magazine, and I warned everyone that this was not your father’s C++.
- 1999
-
Extending ATL 3.0 Control Containment to Help You Write Real-world Containers
The payoff is VBLite, a little form-based development environment, and Dharma wrote the sample code.
-
ATL InternalsJim Springfield, the inventor of ATL, said on the cover that after reading it, there wouldn’t be much left for him to write about.
-
Effective COMWe wrote it as a homage to Scott Meyers’ Effective C++, with his blessing. His style has often been imitated, but never duplicated. (I know, because I tried.)
-
Write ActiveX Controls Using Custom Interfaces Provided by ATL 3.0, Part III
The third and final part, adapted from ATL Internals before it came out.
-
Write ActiveX Controls Using Custom Interfaces Provided by ATL 3.0, Part II
All three parts build the same sample, the BullsEye control.
-
Write ActiveX Controls Using Custom Interfaces Provided by ATL 3.0
We admitted up front that in a few cases ATL gets it wrong, and showed you how to make it right.
- 1998
-
Effective COM Programming: Seven Tips for Building Better COM-based Applications
Tip one: objects may be further away than they actually appear.
-
Windows Telephony ProgrammingI think the 6 guys who read the TAPI book would agree that I really nailed it. : )
- 1997
-
Master’s Thesis: Bridging object models: the faux-object idiom
It came online in 2008, and I tried not to flinch.
- 1995
-
The Downloader’s Companion to Windows 95I promoted it in an AOL chat as “Nacron999” because everything that looked like my own name was taken.

























