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 ...

Why your Visual Studio add-in fails to load with error 0x80004005

Writing Visual Studio add-ins gives you the power to do some impressive things within the IDE to enhance your productivity.  Unfortunately getting your add-in to load into Visual Studio can sometimes be a pain.  Here's just a tip you should know about the .AddIn file that Visual Studio generates for you. The path you provide to ...

Why double-clicking on an .SLN file doesn’t always launch Visual Studio

Well this is my first post as a member of the Visual Studio Platform & Ecosystem team.  My second full day on the job, and I've found some less-than-ideal areas of Visual Studio that I'm eager to improve for myself and for you, our customers.  How exciting.  I'll do my best to post to my blog whenever I run across some ...