tools

April 17, 2025 tools

How to Write Actionable Bug Reports

How to Write Actionable Bug Reports

I often find myself maintaining open source projects. I’ve contributed to many over the years, even hosting multi-person source available” projects on this very website in zip files before there were such things as GitHub or Pull Requests or Open Source Software. No matter what mechanism I’m using to manage the project, if it’s popular, I get issues filed against that project. Those issues break down into two categories:

February 29, 2012 tools win8 telerik

What’s New in the Beta Metro/JS Templates for VS11

What’s New in the Beta Metro/JS Templates for VS11

The Consumer Preview of Windows 8 (aka the Win8 beta) is now available for download, along with the matching Visual Studio 11 beta. You can download them both from the Developer Center for Metro style Apps and at least when I did the downloading this morning, it was smooth and worked well. In case you’re interested, I downloaded the ISO, not the setup, and I am currently writing this blog entry in Windows Live Writer running inside a WMWare Workstation 8.0 virtual machine running on the Windows 7 host OS running inside Boot Camp on my MacBook Pro. As someone said to me this morning: That’s a lot of VMs!” Maybe so, but the Win8 and VS11 betas are running surprisingly well inside of my Inception-box.

Metro/JS Templates for VS11 in BUILD

December 27, 2011 spout tools

GUI REPL for Roslyn

GUI REPL for Roslyn

If you recall from REPL for the Rosyln CTP 10/2011, I’ve been playing around building a little C# REPL app using Roslyn. That version was built as a Console application, but I’ve refactored and rebuilt it as a WPF application:

image

December 14, 2011 spout tools data

Moving My Data To The Cloud: Stormy Weather

Moving My Data To The Cloud: Stormy Weather

For years, I’ve maintained a single main” computer. It was the computer that was the central authority of all of the personal data I’d accumulated over the years and from which it made me uncomfortable to be separated. Because I needed a single computer for everything, it had to work on my couch, on a plane, on a desk and everywhere else I ever needed to go. Also, it couldn’t have a giant monitor or multiple monitors, because it had to go everywhere. All of this was because I needed all of my data with me all of the time.

November 26, 2011 tools .net

REPL for the Rosyln CTP 10/2011

REPL for the Rosyln CTP 10/2011

I don’t know what it is, but I’ve long been fascinated with using the C# syntax as a command line execution environment. It could be that PowerShell doesn’t do it for me (I’ve seriously tried half a dozen times or more). It could be that while LINQPad comes really close, I still don’t have enough control over the parsing to really make it work for my day-to-day command line activities. Or it may be that my friend Tim Ewald has always challenged csells to sell C shells by the sea shore.

December 11, 2010 tools

Using LINQPad to Run My Life: Budgeting

Using LINQPad to Run My Life: Budgeting

I use LINQPad all the time for a bunch of stuff, but most recently and most relevant, I’ve been using it for a personal chore that isn’t developer-related: I’ve been using it to do budgeting.

What is LINQPad?

October 27, 2010 tools

LINQ Has Changed Me

In the old days, the post-colonial, pre-LINQ days of yore, I’d have written a one-way MD5 encryption like so:

static string GetMD5String(string s) {
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(s));
  StringBuilder sb = new StringBuilder();
  foreach( byte b in hash ) sb.AppendFormat("{0:x2}", b);
  return sb.ToString();
}
September 27, 2010 tools

Time to check the donuts

Time to check the donuts

One day when I was supposed to be writing, I needed something to do (as often happens). In this particular case, I built a little tray icon app using the new (at the time) tray icon support in Windows Forms (this was a while ago : ). The data I was checking was my gmail account and whenever there was new mail, I’d pop up a notification. All very simple, so to be funny, instead of saying “You’ve got mail,“� my program said I’s time to check the donuts.”

March 27, 2010 tools

Updated the CsvFileTester for Jet 4.0

I was playing around building a tool to let me edit a database table in Excel, so I updated my CvsFileTester project to work in a modern world, including the 32-bit only Jet 4.0 driver you’ve probably go lying around on your HD.

Enjoy.

February 9, 2010 tools

Entity Designer Database Generation Power Pack

If you like Model-First design in Entity Framework, you’re going to love the Entity Designer Database Generation Power Pack
December 15, 2009 tools

LINQPad updated to support Data Services!

Joe Albahari, the author of LINQPad, has added support for WCF Data Services to the 1.37.1 version beta of LINQPad. This means that you can point LINQPad at any Open Data (OData) endpoint and do queries interactively just like any other LINQ data source. He even supports HTTP security, in case the endpoint in question requires it. Further, if you have your own custom LINQ to Whatever and you’d like to plug a connection to it into LINQPad, Joe has already added the ability to create a custom data context provider. It is, as they say, a thing of beauty. Enjoy!

September 3, 2009 tools

Add “Search the Internet” Back to the Win7 Start Menu

Add “Search the Internet” Back to the Win7 Start Menu

Windows 7 took away a feature I use all the time, as shown on the right: Search the Internet.

October 24, 2008 tools

Tired of writing unit tests yourself? Try Pex!

From the Pex site:

Pex (Program EXploration) produces a traditional unit test suite with high code coverage. … To do so, Pex performs a systematic white box program analysis. Pex learns the program behavior by monitoring execution traces, and uses a constraint solver to produce new test cases with different behavior. At Microsoft, this technique has proven highly effective in testing even an extremely well-tested component.” [ed: emphasis mine]

September 8, 2008 tools

Custom Window Chrome in WPF

Joe Castro, a developer on the WPF product team, has written a very cool article about how to do custom chrome in your WPF applications
March 8, 2008 tools

On Beyond Unit Testing

Quetzal Bradley is a software development engineer (SDE) on my team with *tons* of experience in all manner of infrastructure stuff including the requirements of real-world software testing from the trenches at Microsoft.

Q gave a talk about what comes after unit testing to my team and I was blown away, so I sent him to tell Scott about it so that you could hear it, too.

January 18, 2008 tools

Configuring VS08 to Debug .NET Framework Source

Shawn Burke has released the details to set up VS08 to debug into the .NET Framework source code, including the following assemblies:

  • mscorlib.DLL
  • System.DLL
  • System.Data.DLL
  • System.Drawing.DLL
  • System.Web.DLL
  • System.Web.Extensions.DLL
  • System.Windows.Forms.DLL
  • System.XML.DLL
  • WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation*.dll, some others)
  • Microsoft.VisualBasic.DLL
November 19, 2007 tools

Visual Studio 2008 Has Been Released!

October 3, 2007 tools

Releasing the Source Code for the .NET Framework Libraries!

After programming with MFC (a lot!) and writing the ATL book, it was *very* difficult for me to live in a world without the source code to figure out how something was working. All of us have since moved over to Lutz’s most excellent Reflector, but that’s still no substitute for actually stepping in and now ScottGu has announced that we’ll have the ability to browse and debug with the .NET library source code, integrated into VS2008:

August 24, 2007 tools

Shawn has prepared Genghis v0.8

Shawn Wildermuth has prepared a v0.8 release of Genghis that includes a bunch of stuff that the folks that put the v0.6 release together dropped. The v0.8 release has all the good stuff from the v0.5 release and all the new stuff from the v0.6 release in a .NET 2.0 package.

Shawn’s really done all the work for Genghis since I came to Microsoft. Thanks, Shawn.

June 17, 2007 tools

Genghis moved to CodePlex

April 11, 2007 tools

Show Me The Templates!

Show Me The Templates!

Show Me The Template is a tool for exploring the templates, be their data, control or items panel, that comes with the controls built into WPF for all 6 themes.

Show Me The Template screenshot

March 1, 2007 tools

Visual Studio Orcas March 2007 CTP

And the hits they keep on comin’:

February 19, 2007 tools

Lutz Roeder’s Reflector 5.0

February 14, 2007 tools

Detailed Time Zone Data

A long time ago (2000), I was fascinated with turning a phone number into a time zone so I could tell what time it would be somewhere before I called and woke anyone up (this happened too often : ).

As part of that work, I quickly realized that info in Windows for time zones wasn’t detailed enough, so I began looking elsewhere. I found the Time Zone Map Group, which maintains time zone data for all over the world backward through time. This is an amazing accomplishment, since they have to account for every law change as each tin pot dictator comes to power, e.g. George W.

February 4, 2007 tools

.NET: Decompressing zip file entries into memory

I knew that the J# libraries in .NET had zip file support, but I couldn’t find any samples that showed how to decompress the files into memory. The hard part, of course, is that the J# stream objects aren’t the same as the .NET stream objects. If you’re a Java programmer looking for a familiar library, that’s great, but I’m not, so I had to do a little finagling.

The first thing you need to do is to add a reference to the vjslib assembly, which brings in .NET classes in Java namespaces, e.g. java.io. The one we care most about is java.uti.zip, which includes ZipFile and ZipEntry. We also need java.util for the Enumeration class and java.io for the InputStream class. With these in place, we can enumerate a zip file:

February 2, 2007 tools

Windows Servers for the rest of us

Charlie Kindel of COM fame (he’s wrote the foreword to Don’s seminal work Essential COM) is the Product Unit Manager (softie-speak for butt on the line”) for the new Windows Home Server team. If you haven’t heard about it, Home Server is a Windows server box for the rest of us. I don’t know about you, but I’ve got file, print and media servers all over the house in a confusing mess and I look forward to being able to consolidate it. According to the enthusiastic beta tester I talked to, Windows Home Server is the way to do that.

Yesterday, Charlie announced the Windows Home Server Blog. Enjoy.

January 29, 2007 tools

Window Clippings 1.5

Capturing screenshots for a book used to be a piece of cake. Alt+PrintScreent and you were golden. However, sometimes I wanted to get the cursor, too, and neither Alt+PrintScreen nor PrintScreen does that, so I got myself a copy of SnagIt. Unfortunately, if I wanted to capture multiple screens, I was putting a maximized copy of Notepad in the backgrand, using PrintScreen and PBrush to do the cropping (although SnagIt has slightly more seamless multi-window selection).

Still, this all worked til Vista came along and Alt+PrintScreen left the shadows out! I was fine with that, but Ian correctly pointed out that the screenshots with the shadows looks *so* much better that I could hardly say no.” And I discovered the Snipping Tool in Vista, which let me do a selection on any part of the screen I wanted to, except that now instead of just doing Alt+PrintScreen, even for a single window, now everything is a selection, which means that somebody (hopefully not me!) has to trim the extra whitespace to make sure the pictures layout OK in the book.

January 19, 2007 tools

CodeFetch: Search Book Source Code

CodeFetch allows you to search in the source code associated with books (like the code I publish for my books). Plus, it lets you choose the language to search on and shows the book the results come from so you can read your favorites. Very cool.
December 15, 2006 tools

Point: Local Live Maps

When it comes to Web 2.0 apps, online maps are easily the thing I use the most. I don’t go anywhere these days w/o first pulling up the map on MapQuest, Google maps or, for a coupla years now, local.live.com (starting back when it used to be called MapPoint). I generally use Google for my search engine, so don’t think it’s just the MS employee thing pushing me — I genuinely like local.live.com better.

Google and MS have been in an arms race for years on the maps stuff, doing fancy stuff like 3D globes and other goo that looks good in demos, but that I don’t need. However, in this war of the world (so to speak : ), today MS fired a decisive shot across the bow, I think — the Send” menu. This is huge for me, because I can send the directions to my phone, either via SMS or via email, and I get a great display clearly optimized for my smartphone. Not only does it have a great mini-map, but the directions are easy to read (saving me from printing the directions for just a single trip) and it has a link to reverse the directions (the one thing I never remember to do).

December 15, 2006 tools

VS2005 SP1

Through further advancement and feedback, Service Pack 1 … provides over 70 improvements for common development scenarios including:

  • New processor support (e.g., Core Duo) for code generation and profiling
  • Performance and scale improvements in Team Foundation Server
  • Team Foundation Server integration with Excel 2007 and Project 2007
  • Tool support for occasionally connected devices and SQL Server Compact Edition
  • Additional support for project file based Web applications
  • Windows Embedded 6.0 platform and tools support
December 11, 2006 tools

XNA Game Studio Express Has Been Released!

Oh, man, I *so* want to write a game that runs on my Xbox 360! Now I can (and so can you). Enjoy!

P.S. Impeach!

August 30, 2006 tools

If it can be installed, Scott’s installed it

and if it’s any good, we hear about it. Really, I’m just posting this link to Scott Hanselman’s 2006 Ultimate Developer and Power Users Tool List for Windows here so I can find it later, but feel free to browse the list yourself, broken up into several interesting categories:

  • Top 10 (+ 5) Life/Working-Changing Utilities
  • A Developer’s Life
  • COM is Dead [ed: if only]
  • XML/HTML Stuff
  • Regular Expressions
  • Launchers
  • Stuff Scott Digs
  • Low-Level Utilities
  • Websites/Bookmarklets
  • Tools for Bloggers
  • Smart People’s Utility Pages
  • Alt.Lang
  • Browser Add-Ins
  • Things Windows Forgot
  • Outlook Add-Ins and Life Organizers
  • Ultimate Registry Tweaks
  • Windows Explorer Integration (and other integratey things)
  • Continuous Integration
  • TablePC Indispensables
  • ASP.NET Must Haves
  • Visual Studio Add-Ins
July 30, 2006 tools

Number to String Converter

Number to String Converter

To capture the work that Doug and I did to make Indigo (WCF) and Avalon (WPF) work together, I tore up our PDC sample application into a set of simpler technology samples. To make it fun for myself, as part of these samples, I built a little library for converting numbers into strings of English words, e.g.

July 30, 2006 tools

RegistrySettingsProvider2

I updated the SDK RegistrySettingsProvider to implement IApplicationSettings and built a sample to demonstrate how to integrate it (or any .NET 2.0 custom settings provider) with the settings designer-generated code. Enjoy.

Discuss

July 30, 2006 tools

Number To String Converter

Number To String Converter

To capture the work that Doug and I did to make Indigo (WCF) and Avalon (WPF) work together, I tore up our PDC sample application into a set of simpler technology samples. To make it fun for myself, as part of these samples, I built a little library for converting numbers into strings of English words, e.g. 4 is four:”

July 29, 2006 tools

MS Live Labs PhotoSynth: building the photo web

Imagine your vacation photos displayed in 3D and linked together, both around a space and zooming in and out. Now imagine everyone’s photos linked together in this way. What you get is PhotoSynth:

July 11, 2006 tools

Functional Language Summary

I’ve been hearing a lot about functional programming lately (and the circle of life continues); I found Functional Programming For The Rest of Us to be a nice summary. Here’s what I got from it:

Atoms of FP:

July 5, 2006 tools

A Shared Source Site: CodePlex

CodePlex functionality, built on Microsoft Visual Studio® 2005 Team Foundation Server, provides source control, issue tracking, discussion forums and RSS feeds in and out of each project so that members can stay up to date on the development issues most important to them. Microsoft Visual Studio Team Foundation Server enables developers to collaboratively develop, share, discuss and consume source code and build software.”

Enjoy.

June 12, 2006 tools

“man” for MSDN

If you like man, you’ll love MSDN man. Enjoy.
June 9, 2006 tools

Annotate the MSDN Wiki

For a long time, my favorite place to put up code snippets that I could get back to later has been pinvoke.net (like GetTempFileName
June 9, 2006 tools

Advanced MSDN Search

MSDN has a new search UI which includes And, Or, Exclude, Group, Exact Phrase and Preference in the query and then narrowing by source or category in the results, e.g.
June 5, 2006 tools

Web Application Project: “The type ‘foo’ exists in both ‘some dll’ and ‘another dll’”

In using the most excellent Web Application Project support for ASP.NET 2.0 in VS05 from Mr. Guthrie and co, I ran into what was first an intermittent and then a constant problem that actually made it’s way onto my live site (it worked on my machine!). The error looked like this against several classes in my app, i.e. when I’d comment out one, I’d get another class that showed the same problem:

Compilation Error

April 20, 2006 tools

Visual Studio Express Editions Free4Ever

March 29, 2006 tools

Tell me about your troubles and woes configuring, deploying and maintaining distributed .NET apps

Believe it or not, Microsoft is always trying to improve its products and to do so, I find we do our best work when we actually ask our potential customers what they think.

In this case, I’d like to know what pain points” you experience when configuring, deploying and maintaining distributed .NET applications. That can be any kind of app, whether it’s a client-side app that phones home for code or data updates or whether it’s a fully distributed grid or anything in between. Please be as specific as possible and, if you’d like one of our courteous technical people to follow-up, make sure to include contact info.

March 29, 2006 tools

Gengis for .NET 2.0

Genghis has been updated for .NET 2.0 and is available from the Genghis workspace. Enjoy.

Update: The following controls have been added to Genghis in the .NET 2.0 version:

March 26, 2006 tools

I’m with Scott — I Love Monad

I fell in love w/ the potential of monad a while ago w/ Jeffrey Snover’s original Channel9 video, but I was too lazy to download it onto all of my machines. However, after seeing Jeffrey’s talk at TechDays 2006 in Switzerland (and remembering that monad is installed by default w/ the WinFX SDK, so it was already on all my machines), I took the dive (starting with kiping Jeffrey’s personal copy of Monad,” from ORA, Andy Oakley’s most excellent monad intro) and I’ve been doing it pretty much non-stop on the train and on the plane all the way home. Like Scott, I’m loving it.

I’ve built several scripts, including start-process (to act like cmd.exe’s start” command — invoke-item doesn’t work on URLs), find-file, find-filebytext, find-dir and format-notepad. So far, no luck on format-clipboard, i.e. dropping the results of an operation into the clipboard, but I’m having a blast trying.

March 7, 2006 tools

ClickOnce + FireFox

If you’re having trouble with ClickOnce while using FireFox as your default browser, then this post is for you. Thanks, Saurabh!

February 26, 2006 tools

Hello from ASP.NET 2.0

I ported sellsbrothers.com to ASP.NET 2.0 a while ago, but I wasn’t happy with the experience, so I didn’t pull the trigger on moving it to a production environment. I’m glad I waited. I ported the site again last night using the VS05 Web Application Project preview and it worked a treat. Recommended.
February 8, 2006 tools

Network bandwidth usage monitor?

Sometimes, for no reason I can discern, the network bandwidth on various computers in my house goes south. What I’d love is a tool that shows me how much traffic is going across my network, where it’s going and where it’s from, i.e. from the internet, from a machine in my house, etc. Ideally, it’d also show me the ports and even the processes on each machine that are producing/consuming the data. Does such a tool exist?
January 26, 2006 tools

Calling a Remote Index Server from .NET

I was building some code to access Index Server’s results via .NET and I got this:

// Catalog specified in connection string
string query = select Path from Scope() where FREETEXT(‘foo’)”;
using( OleDbConnection conn = new OleDbConnection(“Provider=MSIDXS.1;Data Source=MyCatalog”) ) {
  conn.Open();
  OleDbDataAdapter cmd = new OleDbDataAdapter(query, conn);
  DataSet ds = new DataSet();
  cmd.Fill(ds, SearchResults”);
  DataTable table = ds.Tables[0];
  ds.Tables.Remove(table);
  return table;
}

January 11, 2006 tools

.NET 2.0 Breaks NTD

Charles Sterling, Developer Evangelist, points out a problem with .NET 2.0 and No-Touch Deployment applications over the internet (where
January 5, 2006 tools

Bindows: Windows Implemented in AJAX

Holy User32 in a browser window, Batman!

I don’t know what it’s like to use an app built this way, but looking at the samples blows me away…

December 20, 2005 tools

New Workspace Link for RegexDesigner

Here.

The nice folks at GotDotNet have decided in their infinite wisdom to move all of the workspaces to a new hierarchy w/o forwarding the URLs and then leaving a message behind indicating that such a thing is temporary to keep users on their toes:

December 9, 2005 tools

Windows Template Library (WTL) 7.5

It looks like my old friend Nenad Stefanovic is up to his old tricks with a new version of my favorite native framework, the Windows Template Library. This will go nicely with ATL Internals, 2e, which Chris Tavares is finishing up for Brent and me.

[via Shawn Wildermuth]

November 16, 2005 tools

Lots of WinForms 2.0 Chewy Goodness

Here. The WinForms team has put up all kinds of WinForms 2.0 resources
November 10, 2005 tools

Windows Forms 2.0 UI Clones

Here.

The Windows Forms team has posted .NET 2.0 versions of their UI clone apps, including:

November 8, 2005 tools

Using VS05 to build .NET 1.x apps

November 4, 2005 tools

Generics Q: Best way to convert a string to a T?

What’s the best way to implement the following semantic (feel free to change the signature)?

bool ConvertFromStringToT(string in, ref T out) {…}

October 27, 2005 tools

Scraping old versions of VS05 off your system

If you read the ReadMe.htm from the Visual Studio 2005 setup, you’ll see a detailed list of up to 23 things to uninstall in the right order (plus 2 notes if you have trouble).

To solve this problem, Dan Fernandez posts about a VS05 uninstall tool that worked wonderfully for me.

October 27, 2005 tools

VS05 Has Shipped! Wahoo!

September 26, 2005 tools

MS Dogfooding Avalon

As MS releases new frameworks, folks always ask Does MS use this?” Of course, MS has tons of existing apps that would be silly to rewrite, but when we build new stuff, we generally use the latest frameworks that make sense.

Towards that end, John Gosman continues his history of Expression Interactive Designer aka Sparkle, mentioning the percentage of managed code in  (100%) and the number of P/Invoke calls (1 — HtmlHelp) to get what is probably the most amazing app I’ve seen in years, whether managed or not.

September 18, 2005 tools

Tracking exceptions thrown by your apps worldwide

This is an interesting, and free, service that you hook your app up to and when it throws an exception, it’ll log it w/ the service so that you can track it from afar.

These kinds of services are exactly what web services are wonderful for. Does anyone know of any other such services? I’m embarrassed to say that I don’t actually know, but does MS provide one in this space or other developer-oriented web services for other than development?

September 10, 2005 tools

Remove the slow “Compress Old Files” option!

I love CleanMgr.exe’s ability to clean out my temp folder, my internet cache and my recycle bin in one swell foop, but that damn
August 29, 2005 tools

Early WinFS beta posted for MSDN subscribers

Not too far behind Indigo and Avalon’s beta 1, WinFS posts their own beta 1 (although Tom Rizzo, Director in SQL
August 12, 2005 tools

Very Cool Nullable Fix

.NET 2.0 has the idea of a nullable” type built right in, e.g.

Nullable x = null; // legal

August 11, 2005 tools

What should I do w/ the metadata?

Imagine I’ve got some metadata” that describes some functionality of my system, e.g. the command line parameters to a tool:


 
 

August 3, 2005 tools

WinFX Beta 1 Online SDK Docs

July 22, 2005 tools

Cool Avalon Default Style Trick

Karsten shows a cool trick for pulling out the default style of an Avalon lookless control. This is super useful if you want to replace an existing control’s look, but you don’t want to have to start from scratch.
July 16, 2005 tools

My First MsBuild Task

Here. The one where I built my first custom msbuild task
July 12, 2005 tools

Eric Sink: The Game is Afoot

I don’t know if Eric understands the ISV industry or not, but certainly seems to. Luckily, I’m on a real product team now, so I get to try to channel Eric into my work.

Eric’s latest writing is The Game is Afoot, in which he describes various games and then draws lessons from them for ISVs. It’s fabulous. He concludes by apologizing for the length and then teasing us with the analogies he left off. It wasn’t too long, Eric! I wanted more! (I also want your blog to have comments, but that’s another thing entirely…)

July 12, 2005 tools

Looking forward to the Portland Code Camp, 7/23-24

The session list for the Portland Code Camp, July 23-24, has just been posted. I’m especially looking forward to the following:

  • .NET Windows Forms Tips & Tricks
  • Forensic Development
  • Implementing Creature AI
  • Introduction to Inform
  • Introduction to Python
  • Introduction to Ruby
  • Ruby on Rails
  • MonoRail - ASP.NET on Rails
  • Web Unit Testing with Ruby and Watir
July 5, 2005 tools

Register for COM Interop and VS05b2

I was helping a colleague work through a .NET COM interop issue. He’d found my article on the topic (“Hosting Windows Forms Controls in COM Control Containers), but couldn’t get it to work. He’d set the Register for COM Interop setting and adding the Guid attribute to his .NET type, but nothing was registered at build-time.

The problem was that, unlike VS03, the wizard-generated AssemblyInfo.cs has the assembly-wide ComVisible attribute set to false” which causes regasm (the command-line version of what VS is doing to register your .NET assembly with COM at build-time) to skip the registration of all of the .NET types in your assembly, defeating the purpose of the Register for COM Interop option pretty thoroughly.

July 5, 2005 tools

Grid: The King of Avalon Layout

The Grid is by far the most useful, powerful and general purpose layout tool in Avalon. As a demonstration of that, Amir Khella, a Microsoft PM on an Avalon-related team, plays with the Grid to build a fish eye effect, duplicating the behavior of the scaling OSX toolbar with 8 lines of C# code
June 28, 2005 tools

Avalon and ASP.NET, Together At Last

Scott Guthrie says:

What we’ve set out to do is to make it dramatically easier for anyone to build AJAX-style web applications that deliver rich, interactive, and personalized experiences. Developers should be able to build these applications without great expertise in client scripting; they should be able to integrate their browser UI seamlessly with the rest of their applications; and they should be able to develop and debug these applications with ease.

For this work, we’ve been working on a new project on our team, codenamed Atlas.’ Our goal is to produce a developer preview release on top of ASP.NET 2.0 for the PDC this September, and then have a website where we can keep updating the core bits, publishing samples, and building an active community around it.

June 27, 2005 tools

New Monad Build Available

You have to stand on one foot, wait for 48 hours and wave a dead chicken over your monitor, but assuming you have the foot and the dead chicken, it don’t cost nothin’ to download the latest beta of Monad. Enjoy.
June 11, 2005 tools

Ajax.NET

If I were doing AJAX work in ASP.NET, Ajax.NET
June 9, 2005 tools

Col. Jessup on the .NET Performance Team

This is fabulous! Let me give you a taste:

We use words like L2, swaps, and working set. We use these words as the backbone of a life spent defending something. You use them as a punchline.”

June 6, 2005 tools

@this freaked me out

I saw code that looked like this today:

class Class1 {
 
static void Foo(object @this) {
    Console.WriteLine(@this);
  }

  static void Main(string[] args) {
    Foo(“hi”);
  }
}

May 25, 2005 tools

C++ is dead, long live C++!

Congrats to the VC++ 2005 team for a write-up like this!

The truth is that this new development in C++ seriously undermines the justification for C# as a language. C++ programmers yet to learn C# simply don’t need to now. What’s the point? They will find the full productivity of Visual Studio 2005 right there at their fingertips supporting the language they know and love. Why should they move to something that is slower and less feature rich?”

May 13, 2005 tools

“dumpbin” is now “link -dump”

Apparently in Whidbey, dumpbin” (and some other tools that were merely wrappers around link) has been dumped. To get to it now, do link -dump -dumpbin_options” e.g. link -dump -exports” does what dumpbin -exports” used to do. In fact, if you just do link -dump” the usage you get is labeled as the dumpbin usage. : )

BTW, it looks like lib,” while still there, is also link -lib” and editbin” becomes link -edit.”

May 13, 2005 tools

When did the cmd shell start doing this?!?

Imagine the following C program:

// cmdio.c
#include <stdio.h>
void main() {
char s[256] = "";
printf(">");
scanf("%s", s);
printf("%s\n", s);
}
April 28, 2005 tools

Another VB.NET feature that makes me jealous

April 26, 2005 tools

I Like VC# Express

I was paving a box this weekend with the March Avalon/Indigo CTP and I needed the matching Feb CTP of VS05, so I installed the Feb CTP of VC# Express. I have to say, I’m impressed. Avalon integrated w/ no trouble. I have all the Intellisense, key bindings, options, code formatting and generics support that I went looking for (although I did have to find the Show all settings option in the Options dialog).

Only two things bug me about Express. The first is minor: I’m used to starting VS with Start->Run: devenv [Enter] and now I have to start VC# Express with Start->Run: vcexpress [Enter]. Given that I can install a bunch of Express products, it makes sense to me to need to learn a new EXE name for each of them (especially if I slip Asynch COM out of long-term storage… [dumping]… there, plenty of room!).

April 4, 2005 tools

RegexDesigner Updated

RegexDesigner has been updated to v1.1 with support for replacement patterns, national and special symbol support, Ctrl+Tab hotkey support, updated highlighting support for color blind users, Ctrl+A support and the use of a bullet instead of @ for matched whitespace. Thanks to Victor Serbin for putting this update together from source contributed to the GDN
March 29, 2005 tools

Translate C# To And From VB.NET As You Type!

March 22, 2005 tools

Duncan Shows How To Host MSDN Content On Your Site

Are you unhappy with how MSDN arranges content on our site? Would you like to host the content you’ve written on your own site in your own chrome? You can’t do it with everything, but for the content with which it works, Duncan Mackenzie has posted code that pulls content out of MSDNs current content management system* and hosts in in your own chrome. For those of you that don’t like how MSDN arranges its content, you now have the technical means to arrange it to suit your own tastes.

* DISCLAIMER: Microsoft’s copyright still applies. The internal details of our content management system are going to change without notice. Use at your risk. No warranties extended. Void where prohibited. Some assembly required. blah, blah, blah…

March 13, 2005 tools

When the student is ready, the teacher will come

I’ve been digging into .NET application extensibility lately, discovering the various pieces discussed here. And then, just when I’d despaired of finding a resource that covered the issues in depth, a copy of Customizing the Microsoft .NET Framework Common Language Runtime,” by Steven Pratscher, showed up at my door (that happens sometimes, but I’ve never quite figured out how…).

Steven’s a PM on the CLR team and his book has wonderful chapter titles like:

February 8, 2005 tools

XSLTO: Mapping XSLT to Objects

Here. When Tim Ewald was still a Microsoft employee, he and the next-gen MSDN
January 30, 2005 tools

Awaiting and Dreading Subtext

If you follow the link to the subtext demo that Preston Bannister mentions, you’ll see my idea of hell, i.e. manipulating code primarily with a mouse. Have you ever seen those guys — you know who I mean — those guys that want to copy a chunk of code and reach for the mouse, almost select the text, almost select the text again, finally select the text they want, go to the Edit menu, choose Copy, click on the place near where they want the code to be, click again, finally click in the right place, go to the Edit menu and choose Paste and by that time, you’ve died of old age? It’s all I can do not to tackle these people so I can use the combinations of Ctrl, Shift, Alt and the arrows to select the text and move the cursor to the spot where it belongs, using Ctrl+C and Ctrl+V, never touching the mouse, like BillG intended.

So, watching the subtext demo, which was nearly all copy and paste using the mouse made me want to tackle the guy doing the demo, especially since I couldn’t run it at a higher speed (my very favorite WMP feature).

January 5, 2005 tools

Thinstall sounds cool

Jim Hubbard gives Thinstall a ringing endorsement:

This solution will take your executable (.Net, VB or C++) and all of its dependencies and wrap them all into a single executable. The neat thing is that it even includes the portions of the .Net framework needed to run your executable inside the executable it creates. So, there’s no need to distribute the whole .Net framework.”

December 1, 2004 tools

GUI Front End to XmlSerializerPreCompiler

Mathew Nolton has posted a GUI front-end to my XmlSerializerPreCompiler that you might find useful. Thanks, Matt!

November 18, 2004 tools

Rich Salz on WSDL 2.0

According to Rich Salz’s reading of the WSDL 2.0 spec (Rich makes a living selling hardware to make XML smoke, so I think he knows), the following is legal WSDL 2.0:

#include "wsdl.h"
extern void hello_world(const char* text);
November 13, 2004 tools

Tons of Fun with Windows Media Encoder

I’ve been wanting an easy way to capture screen demos and audio for a while and after stumbling across Jon Udell’s post on Movies of Software, I thought I’d give Windows Media Encoder a try. Here’s what I learned:

  • I really like giving short little vignettes imagining an audience; I didn’t think I would
  • The preparation for recording a screen demo is the same as a real demo, i.e. I want to make sure I know what I’m going to demo before I do it
  • The preparation does not include lighting or another person to run a camera or a microphone, which means that I can do it on a whim at 5am on a Saturday morning
  • My built-in mic at normal speaking volume works great
  • Capturing a particular screen doesn’t work very well because I’m likely to move between windows without knowing that I will ahead of time. Instead, I should capture a region of the screen, ideally something not too large so that it fits well in a video window
  • Medium quality may not be good enough. I did 13 minutes at medium quality, which resulted in a 3MB file and good audio, but the screen itself was nearly unreadable. Maybe the screen itself was too big?
  • Stop other apps before capturing a screen, otherwise you’re bound to get slowdowns in the capture, particularly in the audio
  • Talking in my kitchen at normal volume for 13 minutes will waken my wife (sorry, sweetie)
November 4, 2004 tools

Distributed Shared Always On Message Queue Service

November 4, 2004 tools

Jon Udell Knocks My Socks Off With Dragon Naturally Speaking 8.0

I’ve never really seen anyone use speech recognition for real and after watching Jon Udell use Dragon Naturally Speaking 8.0, I’m flabbergasted. I had no idea working with it could be so natural. Wow.
November 1, 2004 tools

MaxiVista: Changing My Mind About Tablets

When I first read about MaxiVista, the thing that really got me interested was that it gave me two things that I really want from my Tablet PC. The 1st is to be able to use a slate-only Tablet as a 2nd monitor for my laptop so that I can continue my addiction to keeping my whole life on a laptop, but still be cool like the other kids (I’ve so far avoided multi-monitor setups because I love my laptop too much and I was afraid of the conflicting addictions).

The 2nd thing I get is a result of the first, i.e. if I’m going to use the Tablet as an adjunct to my laptop, then I shouldn’t worry about a generation sometime in the future where Tablet convertibles can replace my laptop, but just get the best slate I can find and enjoy it as a remote viewer/editor of info via file sharing and terminal services.

October 17, 2004 tools

I’m With Jim: X1 Rocks

Like everyone else in the blogespher, I installed Google Desktop Search last week. And, after using it a few times, I’ve uninstalled it. Jim’s right; X1 kicks its butt.
October 15, 2004 tools

Channel9: More Monad

I haven’t even seen this yet and I want to recommend it. I’m just a big monad and Jeff Snover fan.
October 14, 2004 tools

re: Business Object Design tools question

Today Ralph Loizzo asked me what tool I use to outline my objects, to which I replied:

The tool I use most often to design my systems is a text editor. I write my client code first against the objects I wish I had to obtain the first order of functionality I’m after, then implement those classes and refactor til I’ve reached a state of happiness between the clients and the object model.

October 2, 2004 tools

Mixed Feelings

For the last few months, I’ve been doing some really cool work with a group of folks whose only task is to build apps that exercise the WinFX technologies so that we can make sure stuff works the way we want it to and give feedback to the product teams when it doesn’t. Because we’re still in preview technology land, various features that we want to test are in various builds of each part of WinFX, so we’re constantly fooling around with new combinations of the bits, which we bring together in VPC HD images and that I then have to download. Since I’m downloading the 7+ GB images from my house over VNC and since the internal VNC connection software isn’t quite as robust as the VNC software we ship to the rest of the world, that means that I’m constantly being kicked off of my connection and reconnecting, sometimes 2 or 3 dozen times over the 2 days it takes me to download the image. I just finished downloading another build today.

Unfortunately, when setting the Administrator password, I managed to enter the wrong thing twice, which meant that I had no way to log into my new VPC image after 2 days of hard labor getting it to my house. So, instead of re-downloading it again, I googled for a utility to reset the Administrator password. The first link was a knowledge base article from MS that didn’t help me because I hadn’t yet logged in to make myself a password reset diskette (which, frankly, I never do anyway). The second link was a list of completely unsupported, possibly illegal, tools to reset the Administrator password. The first one on that list worked like a charm in several orders of magnitude less time than downloading a new VPC image.

September 23, 2004 tools

Very Much Enjoying .NET Rocks Lately

DNR goes up and down like every other media outlet (it’s not unlike this very web site in that way), but I’ve really been enjoying it muchly lately. Not only did I get to hear someone besides my normal brethren talk about CAS in a way that didn’t make my flinch (Don Kiely on developing with least privilege), but I also got to listen to Mark Miller talk (at break-neck speeds) about my Dad freaking out when the jelly got into the peanut butter at the same time he was enthusing about CodeRush and telling Rory that he didn’t need counseling to deal with his relationship problems, he needed penicillin. Fabulous.

September 21, 2004 tools

Giving a Mapped Drive .NET FullTrust

Lately, I’ve been running Virtual PC a lot to test various versions of WinFX on various platforms. To save me for locking any valuable code into a VPC HD, I use VPC shares, mapping Z to the D HD on my VPC host PC. That’s all well and good til I try to load a project from Z which, according to the OS, is a mapped network drive (in spite of the fact that it’s just the other partition on the very same PC), and Visual Studio complains that since I don’t have FullTrust on that drive, things may not work out the way I’d hoped (and for whoever decided to write the code and put up that message box, thank you!):

The project location is not trusted.
Running the application may result in security exceptions when it
attempts to perform actions which require full trust.
September 20, 2004 tools

Windows Command Shell Partner Drop 3 Available

For Windows Command Shell (aka MSH aka Monad) users, Partner Drop #3 was just posted today on http://beta.microsoft.com
September 10, 2004 tools

Windows Forms 2.0 Rocks The House

August 16, 2004 tools

Dealing with Programmer’s Block

A friend of mine IM’d me just a few moments ago and asked, When you’re sitting in front of a code editor and you have no motivation, what do you do?”

I hereby dub this programmer’s block” and since I’ve never had it (which I’m just now realizing is pretty weird), I wondering if you can offer my friend some advice. Thanks!

August 16, 2004 tools

Good Idea: Builders in Visual Studio Code View

Good Idea: Builders in Visual Studio Code View

I really love Mitch’s idea for a Builder” in the Visual Studio Code View:

August 16, 2004 tools

MSDN TOC Right From The IA’s Mouth

Have you got opinions about how information is arranged on MSDN? Do you have issues with the Table of Contents? Are you just looking for some way to fight back against the machine? If so, check out Paula Land’s blog.

Paula is MSDNs Chief Information Architect and she’s provided a sneak peak at MSDNs new TOC. If you’ve got comments, now’s the time.

July 23, 2004 tools

Tim and His Angle Brackets

Tim Ewald, one of my closest friends and the guy I think deserves to be much more famous (the first chapter of his criminally under-selling Transactional COM+ is worth the price of a Hawaiian honeymoon and is just as fulfilling) is blogging.

In fact, he’s been blogging for a few weeks now, but he’s teased me before, so I didn’t want to point people his way if he was just going to break my heart again. Still, he seems to be on a roll. My most favorite post is XmlSerializer sans XSD, but his recent post on why he cares about the angle brackets on the wire pushed me over the edge.

July 21, 2004 tools

Tim Sneath On The What’s New in WinForms 2.0

Tim Sneath has a nice, concise list of what’s new in Windows Forms 2.0. By far and away, ClickOnce deployment as an order of magnitude improvement over No-Touch Deployment is my favorite advance, but the new controls are cool (you can drop the standard buttons on the menu and toolstrips from the context menu), the BackgroundWorker is very cool (and eliminates about 2/3rds of the code in my threading chapter) and the designer layout assistance for helping with the layout and spacing of controls sounds like it’ll reduce a bunch of monkey work in the designer.
July 13, 2004 tools

Refactoring C# Code Using Visual Studio 2005

Cool piece by Andrew Troelsen on the new refactoring features in Visual Studio 2005 for C#. Now I just have to train myself to think to use the refactoring operations instead of letting my fingers do it as they’ve been forced to for lo these many years…
July 11, 2004 tools

Looking for Genghis Co-Khan

Right now, I’m holding the shared source Genghis library back. I’m acting as sole arbiter of what makes it into Genghis and how and I’m not able to keep up with the flow. I’m looking for someone who’s interested in sharing this duty with me. Only proven contributors to the Windows development community need apply.
June 29, 2004 tools

Lots of Fun Visual Studio 2005 Beta 1 Stuff

MSDN shipped their part of Visual Studio 2005 Beta 1 at about 12:30am on Tuesday morning. Sara has a nice summary of the new MSDN Product Feedback Center that I think folks will find particularly satisfying:

At the MSDN Product Feedback Center, you can submit bugs and suggestions. You can search through other people’s submitted bugs and suggestions. You can vote for your favorites. You can share workarounds. And, you can see feedback and details directly from folks on our product teams. Oh, and you can get notified when the status of an issue you’re interested in changes.”
June 26, 2004 tools

The Good Bits of STL in .NET 2.0

June 20, 2004 tools

More On The VC# 2005 Key Bindings

Joe Nalewabau has one very important addition point to make about the new key bindings in Visual C# 2005: while the VC# team will be providing a bunch of key bindings based on how things are arranged, e.g. Ctrl+W, S to show the Solution Explorer from the Window menu, 90+% of the old key bindings will continue to work
June 18, 2004 tools

The VS Keybinding Randomizer Is An Actual Person

Joe Nalewabau, a Lead PM on the Visual C# team, admitted today that he was responsible for the VC# keyboard randomization process for Visual Studio 2005 and describes the thought process that he went through to get there. I admit that Joe makes a good case for changing the key bindings, but I hate the idea of learning a whole new set (especially since, because I’m a keyboard boy, I’ll be crippled until I learn the new bindings). If Joe would swear on a stack of user manuals that the key bindings would never, ever change again, I’d be happier about it. (Rocky: Again? That trick never works!” Bullwinkle: This time fur shure!“)

Of course, what I think doesn’t matter (it stopped mattering when I signed that damned employment contract : ). It’s what you think that matters and you should feel free to let him know what you think about the new VC# 2005 key bindings.

June 5, 2004 tools

Leaked Image of VB.net Context Menu

The great thing about multiple language teams in .NET is that each team can provide tools specific for their audience, like this leaked image of the Visual Basic 2005 context menu.

[via Don Box]

May 30, 2004 tools

Replicator v0.1

I’m not sure what I would make if I had one of these, but that doesn’t stop me from wanting one.
May 28, 2004 tools

On Threat Modeling

Lately, when the subject about how to actually secure a .NET app or component comes up, a magic phrase is uttered: threat modeling.” Apparently, this is the thing that tells you how folks could use your well-intentioned code to do bad things. And on a mailing list with a fairly select membership (although not too select — I’m on it : ), the Swiderski, Snyder book Threat Modeling was recommended. And the free threat modeling tool that goes along with the book is hosted right on microsoft.com, which I take as a sign of quality. Model those threats towards a happier, healthier you!

[via Pierre Nallet]

May 25, 2004 tools

.NET Framework 2.0: BindingList

After spending a bunch of time with various partial IBindingList implementations, I just stumbled onto a brand new one in the Visual Studio 2005 Community Technology Preview: BindingList. It’s not done yet, e.g. sorting doesn’t work, but the model is certainly what you’d want, e.g. you create a BindingList, bind it to something smart, like a DataGrid or a DataGridView, and you’re able to edit instances of your custom type or add or remove instances, as well as search or sort instances, just like you’d need a custom implementation of IBindingList for today. Very nice.

May 24, 2004 tools

A Gathering of VS05 Team System Info

I find that in the process of learning about something, I often dig through a lot of places before I come up with what I’m looking for.

In the case of Visual Studio 2005 Team System (aka Burton”), I wanted to know a lot more about the features that MS was building into VS for teams, including much more flexible source code control integration, web site functionality and stress testing, static code analysis like FxCop and perf. analysis built right into the build system and stats recording as part of the normal workflow for project management reporting.

May 14, 2004 tools

Chad on the Visual Studio Team Wants To Meet You

Chad says:

You are important to me! You spend your money and time on VS, and you expect VS to help you make more money and time. You will be using Whidbey to make your living, paying for braces and college and retirement, buying coffee and beer and cigarettes, contributing to political and social causes, paying income taxes and mortgage interest, ordering pizza and books and flowers.”
May 7, 2004 tools

More Free WIndows Forms Controls:vbAccelerator

After posting a few sets of free Windows Forms controls, now I’m a magnet for the but you forgot my favorite free controls site” emails, which I feel compelled to share with you. This time, it’s the vbAccelerator site, which is a mix of VB6 and .NET controls, code and tools. The .NET stuff is here. Enjoy.

May 6, 2004 tools

Kent Sums Sums Up the P/Invoke Add-In Nicely: Whoa

Adam Nathan has taken the information from his extremely popular P/Invoke Wiki site and built an add-in to pull and drop P/Invoke signatures directly into VS.NET
May 5, 2004 tools

FileDisassembler Add-In for Reflector 4.0

It turns out that the add-in model for Reflector 4.0 is so powerful that it enabled Denis Bauer to build an add-in that leverages the built-in R4 disassembler to disassembly an entire assembly into source code files
May 2, 2004 tools

More Free WIndows Forms Controls:xpCommon Controls

And the hits, they keep on coming
May 1, 2004 tools

NetXP: More Free Windows Forms Controls

Roy points out some Windows Forms controls that Mike pointed out to him
April 19, 2004 tools

PInvoke.NET: Interop the Wiki Way

Here. Whoever put this site together had the right idea. I was hoping to work my magic to get MS
April 6, 2004 tools

Son of Strike Debugging Inside Visual Studio .NET

Here.

In his June 03 Bugslayer column, John Robbins made a sideways comment when discussing Son of Strike (SOS), a debugging extension from Microsoft for doing all kinds of low-level, mixed native and managed code debugging.

April 5, 2004 tools

WiX: Open Source XML-Based MSI Creation

Rob Mensching, an MS SDE, has finally released his WiX tools for building MSI files from XML. I say finally,” because I’ve been using his tools for months to build the MSI files that MSDN puts up on microsoft.com/download. All of our downloads have to be wrapped in an MSI so that you have to agree to the EULA before you get the files. Plus, we need to bundle some descriptive text and author name in there, along with the code that pops open the install folder after the files have been installed. Instead of using VS.NET to create the MSI files for each set of folks, I built a tool and the best programatic interface to creating MSI files that I could find was easily Rob’s. Check it out.

April 2, 2004 tools

FxCop for SQL Server

If you were listening to the .NET Rocks show today, you heard me invent something that Microsoft has already shipped: The Microsoft SQL Server Best Practices Analyzer
March 30, 2004 tools

Visual Studio 6 SP6

I used to live and die with Visual Studio Service Packs and the DevDiv Sustaining Engineering team has just released another SP for you Visual C++ 6 and Visual Basic 6 programmers. Millions of folks still use these products and it warms my heart that we’re 2.5 generations past this, but still releasing SPs. I don’t anticipate any more of them, though, so I recommend using this SP
March 25, 2004 tools

Web Site Dedicated to Extending VS.NET

I swear I only stopped reading blogs for a coupla days, but interesting news has just surged! For example, I just found out that MSDN has an entire web site dedicated to extending VS.NET. This includes the legendary VSIP and a set of extensions that lets you build VSIP packages in managed code. Very cool.

[via Visual ActiveKent Sharkey .NET SE 3.11]

March 25, 2004 tools

VS.NET Whidbey Has a Command Shell Window Built It

It’s well hidden, but Jason Olson points out that VS.NET Whidbey finally has a command shell built right in. Now if only it changed folders with my solution and support completion via the tab key, support F7 and F8

March 24, 2004 tools

Very Cool Web Service Testing Tool from Mindreef

I knew Mindreef had cool testing tools, but I just found one today on their web site that I ended up using all afternoon. You feed it a WSDL URL and it generates a form, allowing you to see the SOAP request and response packet in several formats include raw XML, to pseudo-code, pretty-printed XML and tree. It’s much more flexible then the built in one that ASP.NET provides and the price is right.

March 10, 2004 tools

The VS7 Debugger doesn’t work. What can I do?

Mark Parks, a PM on the Visual C# Debugger QA team, has posted ways to fix common VS.NET debugger problems. He’s even got a fix for why I can’t debug the localhost version of my site. Thanks, Mark!

[via Duncan Mackenzie]

March 9, 2004 tools

Genghis v0.5 Released

After much delay (man, this Microsoft gig keeps a person busy), I’m happy to announce Genghis v0.5:

  • New HtmlLinkLabel class from Jeff Key that knows how to launch IE and EXEs directly w/o requiring you to handle the event
  • March 5, 2004 tools

    Reimplementing Mike’s cmdline Utility using WMI

    Here.

    In early 2000, Mike Woodring moved Heaven and Earth to write a tool that would inject a DLL into a process’s memory for purposes of finding the command line with which the process was launched. While hanging around Don and Tim this week, Don was all hot on WMI, so we fired it up in .NET and rebuilt Mike’s tool like so:

    February 23, 2004 tools

    Genghis v0.5 On the Way, But Baby First

    Here.

    For those folks asking, another drop of Genghis is on the way, which includes an HTML link class that handles links for you, a user-sizeable panel, a gradient progress bar, a completely revamped FileDocument and a host of fixes and enhancements, including stacking support and terminal server support for toast windows. However, before that can come, Mike Marshall, the Genghis build-master, stopped to email me about the impending arriving of his first child. Now *that’s* dedication! I doubt if I’d stop to email any of the folks in charge of the shared source projects I’m involved with on the way to the hospital… : )

    February 17, 2004 tools

    The Facts About The Windows Source Code Posting

    MSs official word on what happened with the illegal source code posting and what we’re doing about it.
    January 9, 2004 tools

    My First .NET Tool Gets An Update

    Here.

    Given Aaron’s wonderful set of .NET XML tools, I don’t know why Tony Malandain found my little xmlValid tool for checking XML well-formedness and schema validness, but he did and then added the ability to take XML input from stdin (he apparently uses it to check compressed SVG files).

    January 2, 2004 tools

    ImCli Classes Updated for MSNP8

    Here.

    Plenty of folks have asked for updates to my IM client classes to support the new MSNP8 protocol, but only Robert M. Wagner Jr. made the changes and sent them to me. Thanks, Robert!

    December 9, 2003 tools

    Learn the new VC++ from the master

    I used to brag that, unlike most C++ programmers, I learned C++ directly from the CFRONT 2.0 release notes and not from Stanley Lippman (his C++ Primer is a key part of C++ canon law). That boast came to a screeching halt when I had Stan in one of my COM courses and he revealed that he’d written the CFRONT 2.0 release notes.

    And as if teaching the world C++ wasn’t enough, now that he works at Microsoft on the new Visual C++ and it’s new support for the .NET Framework in Whidbey,” he’s started a blog to teach the world now only how VC++’s new tracking handle syntax (aka hat”) but more importantly to point out *why* the VC++ went in this new direction.

    November 26, 2003 tools

    WinForms SDI and MDI wizards?

    Here. I noticed that Stephane Rodriguez put an SDI
    November 26, 2003 tools

    WksSync Updated

    Here. Ethan Brown has done a massive update to the wkssync tool, the command line tool for accessing source from GotDotNet workspaces. Thanks, Ethan!
    November 25, 2003 tools

    ADO.NET CSV File Tester

    Here. I wrote CsvFileTester to explore the ADO.NET/ODBC/JET support for CSV
    November 25, 2003 tools

    ADO.NET CsvFileTester

    ADO.NET 
	CsvFileTester

    CsvFileTester is a tool inspired by Shawn Wildermuth’s ExcelFileTester, which he wrote cuz I kept asking him how to do queries on .xls files. However, because the Excel query language has no where or order by clauses, I gave that up in favor of comma-separated text files.

    November 7, 2003 tools

    The Visual C++ Team Wants You!

    Here. The VC++ team has a bunch of cool work they need doing and they’re looking for candidates. Don’t be shy. Apply today! And if http://microsoft.com/jobs is too slow for you, feel free to send your resume and a bottle of Scotch (OK
    November 3, 2003 tools

    XmlSerializer Workshop

    Here. Simon Steele has posted a most excellent tool for digging through an assembly of .NET
    October 25, 2003 tools

    Another .NET Regular Expression Tool

    Here. Regular Expressions seems a popular thing to build a tool around. The Regular looks cool. They all look cool. Why weren’t any of these tools around when I started building RegexD?!?
    September 6, 2003 tools

    Are You Missing Out on Code Generation?

    Here. Oh, sure, I built an entire codegen product a number of years ago. Would it have hurt folks to get excited about it then?!? : )
    August 6, 2003 tools

    .NET FormatDesigner

    .NET FormatDesigner

    FormatDesigner is an application to experiment with the format strings used to format data in String.Format and various type’s ToString functions.

    July 29, 2003 tools

    *Free* (as in beer) Access to VSIP!

    Here.
    July 7, 2003 tools

    Regular Expression Workbench 2.0

    Here. While I don’t think it’s as pretty, Eric Gunnerson’s RegexW has some cool features I wish RegexD [1] had, like regex->English translation and menus for regex parts. Anyone want to merge the best of both into some uber regex tool? [1] http://sellsbrothers.com/tools/#regexd
    July 7, 2003 tools

    Genghis Moved to GotDotNet Workspaces 1.0

    Here. Now that GotDotNet Workspaces 1.0 has shipped (congrats!) Mike has moved Genghis there. Feel free to apply for membership if you’ve already contributed source to Genghis or if there’s something you’d like to add.
    July 1, 2003 tools

    Spout: Learning to Learn

    Here. The one where I talk about the most important thing I ever learned.
    June 18, 2003 tools

    XmlSerializerPreCompiler

    Here. Tired of the XmlSerializer’s generic
    June 18, 2003 tools

    XmlSerializerPreCompiler

    Tired of the XmlSerializer’s generic File or assembly name ctewkx4b.dll, or one of its dependencies, was not found” exception? The XmlSerializerPreCompiler tools checks to see if a type can be serialized by the XmlSerializer class and if it can’t, shows the compiler errors happening behind the scenes so that the type can be modified. Enjoy.

    This just in: Mathew Nolton has posted a GUI front-end to my XmlSerializerPreCompiler that you might find useful. Thanks, Matt!

    June 13, 2003 tools

    Filter Files With Unknown Extensions For XP

    The fact that Windows XP Find in Files only searches files with known file extensions drives me crazy because it skips, among other things, .cs  files. Every time I set up a new system, I have to re-figure out how to fix this. To facilitate that, I put together a .reg file that will search all unknown file extensions as text files. Enjoy.

    June 3, 2003 tools

    SQL Buddy

    Here. I got turned onto this tool internally and I love it. It installs simply, works intuitively and allows for easy ad hoc queries and commands. Recommended.
    May 7, 2003 tools

    Genghis v0.4

    Sorry for the long wait. There’s been two whole books written between the last release of Genghis and this one. Here’s the list of new features:

    • Everything works under .NET 1.0 and 1.1 (except HandleCollector)
    • MSN Messanger-style popup window
    • UI Type Editor for use with ImageList index selection
    • AppBar implementation
    • Text file search
    • Themed controls
    • Single instance application support, including passing command line args from other instances
    • Multiple top-level window support
    • Many enhancements and fixes to the command line parser
    • Splash screen class
    • Improved WebCommandLineHelper class which now works with .NET 1.0 and 1.1, includes URL decoding and requires no additional permissions (although it does require a server-side HTTP handler, included as the ConfigFileHandler class that maps requests for foo.exe?bar=quux.config to the foo.exe.config file)
    • WizardSheet updates
    • Status Bar Extender for mapping status messages to Windows Forms controls
    April 24, 2003 tools

    NAnt 0.8.2 released

    Here. From Matthew Mastracci: NAnt 0.8.2 was recently released. Note that this release has support for both the Microsoft.NET framework v1.1 and Mono. See the download link above or the NAnt homepage: http://nant.sourceforge.net/
    April 17, 2003 tools

    Hello IDispatch Lovers

    I’m probably jumping into this topic a bit late but it doesn’t seem to end. I admit I haven’t read all article in this thread but I think I have an implementation solution for multiple dual interfaces on one class. And I would like opinions on it from others as well, and as to whether or not it displays proper COM implementation.

    The implementation is very much like one that has been posted earlier, which I’ve seen different variations of many times before. However, I feel the one I am presenting allows all dual interfaces to be on one object and accessible via scripting without explicitly asking for a piece. No new interface definitions will be necessary with this technique. However, there may be one flaw. It will work ideally when none of the dispid’s of any of the dual interfaces collide, and when none of the named functions collide.

    April 17, 2003 tools

    Exposing Multiple Interfaces to Scripting Clients

    This page represents an attempt to capture the collective consciousness of the COM community. Of course, thoughtful feedback is welcome and encouraged (who the hell am I to voice the collective opinions of the entire COM community?). Once this is all sorted out, I anticipate never implementing IDispatch again (“Get COM+ now, I’ll show you how!“).

    This page attempts to answer the question:

    January 22, 2003 tools

    NUnitASP

    Here. From Colin: NUnitAsp is a tool for automatically testing ASP.NET web pages. It’s an extension to NUnit, a tool for test-driven development in .NET
    January 10, 2003 tools

    .NET ResourceExplorer

    .NET ResourceExplorer

    In writing the resources chapter of my WinForms book, I found that there was no single utility for displaying the resource contents of assemblies, .resx files and .resource files (even embedded .resources files) in a way that made sense to me. So, I built one and called it ResourceExplorer.

    December 15, 2002 tools

    New Genghis Release Coming

    Here. There has been all kinds of activity on Genghis since the v0.3 release. I’ve been gathering these bits together to make a coherent v0.4 release in the new year (right after I finish my darn book!). Those of you with final bits and pieces that need to get in before that release, please get them to me ASAP
    December 12, 2002 tools

    ADO.NET — Offline and On Tap

    Here.
    December 7, 2002 tools

    WinForms Control Inspector — Spy++ for .NET

    Here.
    November 14, 2002 tools

    VBTV Episode 2: DO NOT WATCH THIS SHOW!

    Here. Actually, I think you probably should watch it. I find VBTV
    November 7, 2002 tools

    Regular Expressions in .NET

    Here. Michael Weinhardt and Chris Sells plumb the depths of .NET
    October 13, 2002 tools

    Scancode Mapper

    Scancode Mapper
    October 3, 2002 tools

    NUnit 2.0 Released

    Here. From Bernard Vander Beken: From the readme: “This is the second major release of the xUnit based unit testing tool for Microsoft .NET
    September 20, 2002 tools

    NUnit 2.0 RC3 available

    Here. From Bernard Vander Beken: From the release notes of this unit testing framework: “This barring any unforeseen new critical bugs will be the last V2.0 release candidate. We will not be adding any additional features until V2.0 is released which we expect now to be sometime around 26 September, 2002.”
    September 10, 2002 tools

    TAPI Explorer

    TAPI Explorer

    I built the TAPI Explorer (tExplorer) to allow me to understand the various capabilities of the telephony devices installed on my system when I was developing TAPI applications and writing my TAPI book. It grew into a utility for showing all line, address and phone capabilities as well as other TAPI settings, e.g. country codes, telephony locations, service providers, etc. If you’re running into TAPI errors that you don’t understand, TAPI Explorer will help you work through them.

    September 4, 2002 tools

    Microsoft XML Diff and Patch 1.0

    Here.
    August 29, 2002 tools

    VC++ Jacket for the Best Managed C++ Entry

    Here. Things are still heating up in the prize category. Not only has O’Reilly just donated a year subscription of Safari, along with a bunch of .NET
    August 18, 2002 tools

    Genghis v0.3 Release

    What’s new in Genghis v0.3:

    • Screen shots for everything.
    • Source available via CVS repository.
    • MRU support, including both in-menu and sub-menu support.
    • A much more robust set of validation components modeled along the lines of the ASP.NET validation components, including required, regex, range and comparison validators.
    • FileDocument component for document/dirty bit handling.
    • Wizard support, including changing page groups on the fly!
    • Custom state treeview so that you can set and show all three checkbox states.
    • A class to expose the WinForms HandleCollector so that you can put your own custom resources into it.
    • A Screen Saver class.
    • A bunch of file utility classes, including retrieving mapped drives, retrieving shares and path resolution.
    • A cursor changer class that works with the using block.
    • A WebCommandLineHelper class to parse command line arguments from the URL used to launch href-exes.
    • Update to the FileNameDialog to include newish flags.
    August 16, 2002 tools

    NUnit 2.0 RC1 available

    Here. From Bernard Vander Beken: Highlights of the updated unit testing framework for .NET: - Attribute based mechanism for identifying test fixtures and test methods. - Automatic creation of test suites. - Improved GUI
    August 9, 2002 tools

    VBTV

    Here. From Jesse Ezell: If the .NET
    July 25, 2002 tools

    Beta-2 of Nunit 2.0 is available

    Here.
    July 25, 2002 tools

    Microsoft XML Diff and Patch 1.0 Beta

    Here.
    June 20, 2002 tools

    treecc — Free Compiler Construction Tool for C#

    Here.
    June 10, 2002 tools

    Genghis — 0.2 Release

    Thanks to all of the *very* active contributors, Genghis has doubled in size! This update includes:

    • an automated nant build
    • a framework for nunit tests
    • an almost complete .NET implementation of SimplePad
    • an imagelist combo box
    • a preferences and window position serializer
    • an MRU sample
    • a custom state treeview class for doing tri-state checkboxes
    • an update to ListViewSorter to make it declarative
    • an expanded trace class for common tracing operations
    • various other bug fixes
    June 9, 2002 tools

    ADOGuy’s Typed DataSet Generator

    The Typed DataSet that Microsoft generates from Visual Studio.NET (or from the XSD.exe tool), does not support derivation directly. In order to allow us to derive from Typed DataSets, Chris Sells and I created this tool that fixes the couple of issues with inheriting from Typed DataSets.”

    June 8, 2002 tools

    Brent Rector: The Truth about Code Obfuscators

    An obfuscator only delays the inevitable. With unlimited resources (time and money) and physical access to code, all code can be reverse engineered. This was true for native x86 binaries and it’s true for .NET Framework applications. What an obfuscator does is increase the cost of the effort required to reverse engineer obfuscated code. Hopefully, it increases the cost enough to make reverse engineering your code unpractical.”

    June 6, 2002 tools

    Visual Build Pro

    It’s easy to put Visual Build Pro to work doing all that manual labor for you so you can focus on more important things. Visual Build Pro is a powerful but affordable build management solution that will automate the build process without a huge commitment of time, and it works with the tools you’re using today.”

    June 4, 2002 tools

    Updated XsdClassesGen

    Eric Eric Friedman has submitted code to support namespaces and uninstall. The former fills the biggest hole in XsdClassesGen (thanks Eric), but why would anyone need the latter?!? : )

    May 17, 2002 tools

    .NET XsdClassesGen

    XsdClassesGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe wrapper classes for serializing to and from XML documents. It takes as input an XSD and produces the C# or VB.NET code to do the serialization using the XmlSerializer. This is really just the output of running xsd.exe /classes, but integrated directly into VS.NET.

    If you’d like to know more about what a custom tool is and how to build your own, check out CollectionGen.

    May 13, 2002 tools

    Modern C++ Design

    From Razvan Caciula: I like Chris Sells’s books, but also i like romanians too :> I’m preparing for a technical interview and i founded this book very useful.
    May 10, 2002 tools

    Genghis — .01 release

    We’ve released the v0.1 version of Genghis. Enjoy!
    May 10, 2002 tools

    Announcing Genghis

    Genghis is a set of extensions built on top of .NET
    May 10, 2002 tools

    SafeFormatter for .NET

    Are you building and deploying .NET applications in a secure environment, e.g. over the intranet or the internet? If so, they you’ve probably mourned the loss of the binary and SOAP formatters that can automatically serialize a graph of objects that are marked as [Serializable] and that may also implement ISerializable and IDeserializationCallback. Both of these formatters are dependent on reflection, which will not be available in a more restrictive security environment. Likewise, even ISerialization.GetObjectData is verboten if you wanted to do this kind of thing yourself. As far as that goes, [Serializable] and ISerialization should be forbidden in a secure environment, as it allows a client to get and set the private variables of an object, potentially causing harm.

    Still, security is the enemy of usability, to paraphrase Keith Brown. So, in the spirit of a balancing the design need for objects that can serialize themselves with the goal of complete disclosure in a secure world, I’ve built my own safe” formatter. It only uses facilities of the runtime that work in the most secure environment of the default settings for the internet zone. So that objects can guard themselves against malicious data, I define a new interface called ISafelySerializeable that they need to implement to support this serialization facility. The protocol is exactly the same as ISerializable, so if that interface is already being implemented, the implementation of GetObjectData can be shared between both interfaces.

    April 12, 2002 tools

    Giving VS.NET That XP Look

    USE THIS FILE WITH CARE. It causes problems with image lists for .NET EXEs that don’t also use the same manifest file.

    Just drop this devenv.exe.manifest file next to devenv.exe in your VS.NET install directory and the next time you start VS.NET under XP, it’ll look mostly the same! (well, maybe a little different : )

    April 10, 2002 tools

    .NET CollectionGen

    .NET CollectionGen

    [Note: As of 5/5/03, the functionality of CollectionGen has been sucked into Eric Smith’s CodeSmith. I asked Eric to take on these features because CodeSmith does all of what CollectionGen does and more. All new feature requests/bug reports should go his way.]

    CollectionGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe collections. As it turns out, I did almost none of the work. Jon Flanders figured out how to add a custom tool. Shawn Van Ness implemented the template for type-safe collections. I just put it together.

    April 6, 2002 tools

    RegexDesigner.NET

    RegexDesigner.NET

    RegexDesigner.NET is a powerful visual tool for helping you construct and test .NET Regular Expressions. When you are happy with your regular expression, RegexDesigner.NET lets you integrate it into your application through native C# or VB.NET code generation and compiled assemblies (usable from any .NET language).

    March 8, 2002 tools

    .NET IM Client Classes

    Inspired by my need to know who was calling without hauling my butt off the couch to look at the caller ID on the phone across the room (my father always said that laziness is the mother of invention”), I built a couple of C# classes for managing an IM connection and an IM session. The test client is a console application that just sends messages and dumps whatever it gets from the IM server to the console, but I think it would serve as the code is the beginnings of a real IM client. It does the MD5 stuff properly and handles being redirected to another IM server, so the hard part of the protocol is already implemented. The sample itself is a handy little program that logs in as an IM user, sends a message to another IM user and logs back off again. Perfect for annoying your office mates. Enjoy.

    BTW, Harry Pierson has made a number of updates to this core code to support his full-blown  .NET IM client application. Check it out!

    February 16, 2002 tools

    Welcome to Genghis!

    Welcome to Genghis!

    Welcome to Genghis

    Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.

    January 6, 2002 tools

    VS.NET Fun Facts

    If you haven’t seen it yet, check out the VS.NET Fun Facts piece that started as praise and bitching about VS.NET, but turned into something pretty useful if you’d like to get the most out of VS.NET.

    September 13, 2001 tools

    CorPub

    Oct 10, 2001

    I’ve updated CorPub to show *all* managed AppDomains by initializing the COR debugging sub-system prior to enumerating them. Thanks to Atif Aziz for the tip.

    August 8, 2001 tools

    .NET XML Checker and Validator

    Aug 8, 2001

    xmlValid is simple command line utility that will check an xml file for well-formedness and, optionally, will validate it against a supplied XML schema file (xsd). I built it to check that my site’s HTML files were well-formed (and therefore XHTML-compliance), but it’s got all kinds of other uses, including checking .NET .config files. Source is included. Enjoy.

    August 7, 2001 tools

    Setting the Completion Character

    Aug 7, 2001

    Whenever I set up a new machine (which happens a lot as WinXP and .NET go through their beta & RC cycles), I always need to manually set up the completion character (to TAB, of course) in the Registry. Shawn VanNess posted a .rgs file that would set this up without the lengthy search through the Registry. Inspired by Shawn, here’s my own completionChar.reg that doesn’t require a program to parse .rgs files (which doesn’t come with Windows).

    August 6, 2001 tools

    NullScript Used to Reverse Engineer Gen

    Wow. I’m impressed as all get out. Hugh Brown has reverse-engineered Gen as one of the tests of his NullScript implementation. I wish I would have had this when I started Gen a couple of years ago. It would’ve saved me figuring out how ASP did it.

    My thinking along these lines years ago led me to go the opposite way, i.e. I built a front-end ASP parser that generated script for VBS. I called it TextBox (which, as a Win32 programmer, I should’ve realized was a terrible name…).

    August 5, 2001 tools

    Moniker Wizard

    Here’s my moniker wizard that includes the framework used by the Basic Monikers.

    August 4, 2001 tools

    Tim’s COM+ Utilities

    Aug 4, 2001

    The great and powerful Tim Ewald (author of Transactional COM+: Building Scalable Applications and personal friend of mine) put together a handy little set of COM+ classes and utility functions in a concise header file that he has graciously allowed me to host. Among my favorites are IsInActivity, IsInTransaction, IsSecurityEnabled, GetCallersName,  IsCallerInRole, and parameterized versions of CoGetObjectContext and GetAspObject (which is even cooler than my CAspPtr). Download the code! Buy the book! Feed your brain!

    August 3, 2001 tools

    Command Line Parsing

    Aug 3, 2001

    I got tired of not having getopt under Win32 and the best version to port doesn’t handle slashes (as per the Windows standard) or @files for arguments and it requires you to give away the source for every app that uses it, so, inspired by my friend Josh Gray,  I built my own. It supports typed flags and params, @file support and building full usages on the fly.

    August 2, 2001 tools

    Expando Objects

    Aug 2, 2001

    I’ve seen lots of interest lately in expando objects, e.g. objects that can add methods and properties on the fly. Joe Graf wrote a piece on IDispatchEx in MIND that was pretty interesting. My own implementation of IDispatchEx is available here. It supports expando objects that have no static properties or methods as well as those that do. Check out the DispExTest.js for a demonstration, dispeximpl.h, dynamemlist.h and dynamemlist.cpp for the implementation and MyExpando.h for the usage.

    August 1, 2001 tools

    Windows Template Library

    Aug 1, 2001
    July 31, 2001 tools

    VARIANT_BOOL Wrapper

    July 31, 2001

    CComBool is a class to prevent the misuse of the VARIANT_BOOL type. VARIANT_BOOL is a problem because its legal values are -1 and 0 instead of 1 and 0, making converting back and forth between bool, BOOL and VARIANT_BOOL problematic. CComBool supports the constructors and operators needed to convert between the three C++ Windows Boolean types. It also supports operator& and CopyTo for common COM client and server usage. CComBool is available here.

    July 30, 2001 tools

    ATL CRT Numbers

    July 30, 2001

    The following table lists the various prices you pay for using the CRT and the default Win98 support in VC6. The builds were done with VC6, SP3, ATL COM in-proc server, no classes, no MFC, no merged p/s:

    July 29, 2001 tools

    VBLite

    July 29, 2001

    Dharma Shukla and I wrote Extending ATL3.0 Containment to Help You Write Real-World Containers” in the 12/99 issue of MSJ detailing how to add much-needed features to ATLs support for control containment. Dharma wrote the sample code that accompanies the piece and has already made improvements to the code based on feedback. He’s maintaining the history and bits here.

    July 28, 2001 tools

    Attila

    Attila stands for ATL for Applications.” Attila is a set of extensions built on top of ATL to provide application-level services in the same flavor as MFC. Towards that end, Attila uses a lot of the same notions as ATL, e.g. heavy use of templates, static binding and reliance on the compiler and the linker doing their job.  Also, in the flavor of ATL, Attila is under-documented and requires a lot of user investment to make use of it. However, once you do, we think you’ll find the flexibility and efficiency worth it. If you don’t, you haven’t lost much, cuz Attila is free. Enjoy.

    July 27, 2001 tools

    Simple Object II ATL ObjectWizard Extension

    July 27, 2001

    The Simple Object II ATL ObjectWizard Extension (whew — I’ve got to come up with a shorter name…) provides the following features:

    July 26, 2001 tools

    CComVector: A SAFEARRAY Wrapper

    July 26, 2001

    I got tired of not having a smart type for SAFEARRAYs, so I built one. It’s limited to one dimension (does anyone use multi-dimentional SAFEARRAYs?) and provides one class for the SAFEARRAY and another for the data itself (the lock is a resource, too), but the usage is pretty nifty. See comvector.h for the what and the how.

    July 25, 2001 tools

    CComDate

    July 24, 2001 tools

    Exposing Multiple IDispatch Interfaces

    If you’d like to know about how to expose multiple IDispatch implementations from a single COM object, check out this extensive treatment of that very topic.

    July 23, 2001 tools

    MDI Applications in ATL

    July 23, 2001

    At atlmdi.zip, please find Charles Petzold’s famous raw Win32 MDI application, MDIDemo, ported to ATL. See atlmdi.h for a set of base classes for building MDI applications in ATL and mdidemo.cpp for an example of their use.

    July 22, 2001 tools

    Fixing the External Dispatch in ATL + IE5

    July 22, 2001

    Are you getting this: Error: object doesn’t support this property or method” when you try to call a method on your ATL HTML Control exposed external dispatch (accessed via window.external in the HTML of the control)? Did it used to work with IE4 and now it doesn’t with IE5? That’s because the ATL boys played fast and loose with the identity laws of COM and, while it took the COM police a while to catch up with them, catch up with them they did.

    July 21, 2001 tools

    TraceHook

    July 21, 2001

    TraceHook is a member function call tracing delegator hook based on Keith Brown’s most excellent universal delegator. It allows you to write:

    July 20, 2001 tools

    CAspPtr

    If you’ve ever had to write the code to pull the ASP intrinsic objects from the MTS context, you might appreciate CAspPtr, which allows the following:

    STDMETHODIMP CJon::DoIt() {
      CAspPtr<IResponse> spResponse;
      if( spResponse ) {
        spResponse->Write(CComVariant(OLESTR("Baby got <b><i>Response</i></b>.")));
      }  
      return S_OK;
    }
    
    July 19, 2001 tools

    Smart IEnumVARIANT

    Visual Basic and its variants (sic) use IEnumVARIANT to implement the For-Each statement. Unfortunately, they only ask for 1 element at a time, leading to terrible performance across apartments. I propose two solutions. One allows you to wrap any collection in a CollectionBuffer object and set the buffering yourself, e.g.

    Dim collBuffer As Object
    Set collBuffer = CreateObject("SmartEnumSvr.CollectionBuffer")
    collBuffer.Collection = coll ' coll is an interface on any collection
    collBuffer.BufferSize = 1024 ' How many items would you like buffered?
    
    c = 0
    For Each v In collBuffer ' Uses SmartEnumVARIANT to buffer items
        c = c + 1
    Next v
    MsgBox "Counted " & c
    	
    July 19, 2001 tools

    SmartEnumVARIANT

    The Problem

    VB/VBScript provides the implementation of For-Each using an implementation of IEnumVARIANT exposed from a collection via the _NewEnum method. Unfortunately, VB uses 1 for the argument to Next, making round-trip time terrible.
    July 18, 2001 tools

    Implementing Marshal-by-Value using ATL

    July 18, 2001

    Not too long ago, Jonathan Borden, jborden@MEDIAONE.NET, posted a nifty class called IMarshalByValueImpl that implemented IMarshal for objects interested in being marshaled by value . It was built in the ATL style, i.e. it used fun template tricks, and depended on the COM class also implementing either IPersistStream or IPersistStreamImpl. And, in fact, ATL provides an implementation of IPersistStreamInit called IPersistStreamInitImpl. However, IPersistStreamInitImpl has one fatal flaw: it implements GetSizeMax by returning E_NOTIMPL. This breaks Jonathan’s IMarshalByValueImpl, which depends on a sane implementation of GetSizeMax from the class.

    July 17, 2001 tools

    Implementing dispatch-based interfaces in ATL

    July 17, 2001

    There are three kinds of ways to declare a dispatch-based interface in IDL, but ATL (as of version 3.0), only supports the implementation of 1.5 of them (duals and a raw dispinterfaces for handling events).  The ATL Dispatch Sampledemonstrations the use of three ATL-based classes, one for implementing each type of dispatch-based interface. The header file that defines these classes, dispimpl2.h, is provided for use in your own projects.

    July 16, 2001 tools

    MeowMoniker

    If you’re into COM Monikers, here’s one that I like.

    July 15, 2001 tools

    Basic Monikers

    Wish there was a moniker that did CoCreateInstance just like the Class Moniker calls CoGetClassObject? Wish you were able to compose the Class Moniker with a host name? Then you’ll want the BasicMonikers project, which bundles together the New moniker and the Host moniker. Sample syntax follows:

    dm.newmk.1:Excel.Application
    dm.newmk.1:00024500-0000-0000-C000-000000000046:
    dm.hostmk.1:frodo:!dm.newmk.1:00024500-0000-0000-C000-000000000046:
    dm.hostmk.1:frodo:!clsid:00024500-0000-0000-C000-000000000046:
    July 14, 2001 tools

    regsvr.reg

    July 14, 2001

    regsvr.reg is a regedit script file that adds Register COM Server and Unregister COM Server to the context menu for DLLs, OCXs and EXEs under Win95+ and NT4+. In addition, it’s also been updated to add Register TypeLib and Unregister TypeLib commands to .tlb, .odl, .dll, .ocx and .exe files, using VC6′s new regtlib tool.

    July 13, 2001 tools

    ATL Composition

    July 13, 2001

    I’ve developed a set of macros to support implementing interfaces using nested composition in ATL (the one common way of implementing interfaces they neglected). The benefit of composition is that it is easy to implement multiple interfaces with methods with the same name but that require different behavior, e.g.

    July 12, 2001 tools

    Client-Side Enumeration Iterator

    July 12, 2001

    Have you ever been jealous of the VB programmer who could write this:

    July 12, 2001 tools

    STL Enumerator Iterator

    Have you ever been jealous of the VB programmer who could write this:

    sub EnumVariants(col as Collection)
        dim v as variant for each v in col
            ' Do something with v
        next v
    end sub
    July 11, 2001 tools

    GitHelp

    July 11, 2001

    githelp.hdefines a set of wrappers for implementing inter-thread marshaling using the GIT instead of streams. githelp.cpp provides the non-inline implementation. For another spin on GIT usage, check out Don Box’s GitLip.

    June 30, 2001 tools

    Codename TextBox

    The Need for Code Generation

    Have you ever wanted to generate code like the wizards do, i.e. start with a template, mix in some symbols and boom, out comes the code? If you’re building a custom AppWizard, you define code like so:

    February 22, 2001 tools

    TZ Data to XML Project

    These are the outputs of my attempts to translate the native tz data into XML for easier parsing for applications other than implementations of the standard C routines related to time.

    This is the first step in a project to merge time zone and map data by the Time Zone Map Group, lead by Chuck Ellis.

    February 16, 2001 tools

    Genghis

    June 26, 2000 tools

    UrlRun

    Mon, 26 Jun 2000

    To deal w/ the number of wrapped URLs I get in my email box, I built UrlRun. It checks the clipboard for an URL, no matter how broken, strips spaces, newlines and greater thans out of it and runs IE. To handle an URL as show above, select it, copy it to the clipboard and launch UrlRun.exe. I keep it on my QuickStart toolbar.

    November 1, 1999 tools

    Welcome to Attila!

    Welcome to Attila!

    Attila GDI sample
    (Jim Murphy likes Attila and GDI a little too much…)

    June 27, 1997 tools

    Welcome to MeowMoniker!

    Overview

    MeowMoniker and Feline are COM objects designed and built by Chris Sells, with a great deal of input from Don Box and Tim Ewald. The MeowMoniker is a custom moniker derived from the CComMoniker class implemented by Don Box, Tim Ewald and Chris Sells.