Developer Support

Advocacy and Innovation

Read only, frozen, and immutable collections

[Update: a more recent post with new data on attainable performance of immutable collections] The topics of immutability and functional programming has fascinated me lately.  Mostly because of my work on the Visual Studio Common Project System (CPS) which is a large, highly multi-threaded code base that only remains sane because of its...

VC++ Debugger Extensibility

Visual C++ 2010 includes a debugger extensibility point that makes it easy for people who have written their own debuggers, or wish to modify the way existing debuggers are launched, to do so.Check out the Visual C++ Debugger Launch Extension project template on the Visual Studio Gallery to get started...

How to force Vista to NOT elevate an application

User Account Control, the feature in Vista that causes installers and some applications to require "elevation" to administrator privileges to run, cuts both ways.  It's designed to protect users from apps that try to make system-level changes by giving the user the heads up that it's about to happen and gives the user the chance...

GZip encoder for Compact WCF

The GZip encoder is not included in NetCF as it is on the desktop WCF, but it isn't hard to build yourself and in fact we have released a sample of exactly how to add your own GZip encoder to NetCF: http://go.microsoft.com/fwlink/?LinkId=108652 So many people have asked me for it lately I thought I'd better just post the link.  Have...

Visual Studio trick to quickly find any file in solution

You know that Find text box in the toolbar of Visual Studio?  Those of us who are keyboard-inclined probably never use it because Ctrl+F is quicker than moving your hand to the mouse.  But there is a hidden gem of a feature inside it that really makes me feel like a power user that I wanted to share. That find box doubles as a ...

OpenID and ASP.NET web sites

If you are a web developer I hope you've considered accepting OpenID credentials for logging in your users.  If you have an ASP.NET web site, the process of adding OpenID support to your web site couldn't be easier when you use the free C# DotNetOpenId library.  Supporting OpenID is a great idea...

Why you should never use TCHAR in C++ header files

In C++, TCHAR, LPCTSTR, CString, and other types discretely change to their char/WCHAR, CStringA/CStringW counterparts depending on whether UNICODE is defined in your source code.  Cool.  By conscientiously using _countof(x) instead of sizeof(x) where appropriate and TCHAR's everywhere instead of char/WCHAR, you can write code that ...