Saturday, September 06, 2008

Mix PowerShell, some Would Bank data and a little NetMap and you get… Some cool data visualizations…

Development in a Blink - Using PowerShell and World Data (now a public API) with Microsoft’s NetMap free graphing libraries

“…

The World Bank’s first API offers 114 indicators from key data sources and 12,000 development photos. We are releasing this API because we believe this information can be mapped, visualized and mashed up in an unlimited number of ways that will help develop a better understanding of trends and patterns around key development issues.

HERE

Visualize the Data with PowerShell and NetMap

I posted on Microsoft Research .NetMap and PowerShell. This script visualizes countries by Income Level, Lending Types and Regions.

Income Level

image

…”

I thought this was a pretty cool mashup of neat tech, taking some raw data, accessing it via PowerShell and then visualizing it with NetMap.

I still think I can/should use NetMap for “something.”

(PowerShell Team Blog - OMG - Check This Out (Data Visualization with PowerShell))

 

Related Past Post XRef:
.NetMap – Using Excel, or embedded control, to graph and visualize connections, networks (social), degrees of separation, associations, etc

A C# class to make running, and capturing their output, command line/console applications “slick” and easy (From the author of PoshConsole)

Huddled Masses - NativeConsole.cs - Run console apps and get their output

“…

A while ago I wrote a little class for calling console apps from a .Net application, and I’ve been using it in several of my apps (most notably in PoshConsole) and it works great, but since the only place I’ve really published it is in PoshConsole, I thought I’d write it up here, and share it with you …

Basically, it’s a slick invisible event-based wrapper around the Windows native console. What I mean is, it calls AllocConsole when it’s instantiated to create a native console, and hides the console window so it doesn’t show up. This allows you to run any console app you need to from within your app without having it popup a black window.  Note this doesn’t let you run graphical consoles like EDIT.COM, but it can handle interactive apps like cmd.exe, batch files, or ftp.exe). All you really have to do is create one of my NativeConsole objects, handle its WriteOutputLine and WriteErrorLine events … and use its WriteInput method to send input or commands to the console app.

You can check out how it works in my WPF-based PoshConsole, and you can get the latest version of it from that project as well (it’s in \trunk\Huddled\Interop\NativeConsole.cs) but for now, here’s the single file source code, with a more liberal set of licenses than I allow for PoshConsole.

…”

Sometimes the only option is the call a command line/console application. I’ve run into that more times than I want to think about, and always seem to re-invent this wheel.

Well has taken the time to publish the work he’s done in this area, and I think that’s the wheel I’m going to go with in the future. His code handles areas where I’ve skimped on or just ignored and hoped wouldn’t run into…

I’ll stand on the shoulders of giants and all that… ;)

Managed Extensibility Framework (MEF) CTP2 Released – Now with the full source

Brad Abrams - Microsoft Extensibility Framework released on CodePlex

“I am super jazzed that we released the Microsoft Extensibility Framework CTP2 on CodePlex. 

http://www.codeplex.com/MEF

We have taken a lot of good feedback in from the community... a few cool things here:

1. We shipped source code!
2. We have a complete set of developer Overviewsguidelines and samples.
3. Because of community feedback, we now support constructor injection
4. MEF itself is now more extensible... For example, want POCO?, no problem, it is now possible to write an extension to store the customer attribute metadata in an external file.    More to come here, but it is a solid start!

…”

Krzysztof Cwalina - MEF on CodePlex

“…

The changes are quite significant:

1. The preview ships with sources under a very permissive license (Ms-LPL).
2. We now support constructor injection. Feature that the community asked for.
3. We completely redesigned MEF’s extensibility points. …
4. We significantly cleaned up the container APIs…

…”

Managed Extensibility FrameworkWhat Is MEF?

“The Managed Extensibility Framework (or MEF for short) simplifies the creation of extensible applications. MEF offers discovery and composition capabilities that you can leverage to load application extensions.

What problems does MEF solve?

MEF presents a simple solution for the runtime extensibility problem. Until now, any application that wanted to support a plugin model needed to create its own infrastructure from scratch. Those plugins would often be application-specific and could not be reused across multiple implementations.
  • MEF provides a standard way for the host application to expose itself and consume external extensions. Extensions, by their nature, can be reused amongst different applications. However, an extension could still be implemented in a way that is application-specific. Extensions themselves can depend on one another and MEF will make sure they are wired together in the correct order (another thing you won't have to worry about).
  • MEF offers a set of discovery approaches for your application to locate and load available extensions.
  • MEF allows tagging extensions with additonal metadata which facilitates rich querying and filtering
…”

Managed Extensibility FrameworkMEF Preview 2

Welcome to the first MEF Source Preview


Disclaimer: MEF is in development. The source available on this site, does not reflect the final state of the product. It is also not a CTP, or a Beta. It is very likely that the apis within will evolve and change. If you are downloading the source, consider it a preview of where we are at currently. We'd welcome any feedback you have on your experience.
This is the second preview of MEF, though the first which contains MEF source. The first preview was released as a CTP on CodeGallery. This drop includes full source for MEF as well as several sample applications.
Samples within include:

  • Meflook - Outlook like client*
  • Meftris - Tetris like game with shapes as plug-ins.*
  • Extensible File Explorer - File explorer with extensible views, favories file viewers and shell services*
For documentation on the samples click here.

…”

Added to my “Must look at soon” and my “Follow up at PDC” lists.

Very cool to see the release of the source followed through. Firing it up in VS now… ;)

 

Related Past Post XRef:
The Managed Extensibility Framework (MEF) CTP Released (Not to be confused with the Managed Addin Framework [MAF] which became System.Addin)

Friday, September 05, 2008

Step by step guide to using your Windows Mobile device as a very cool PowerPoint Remote Controller/Terminal

Conversations with the Communications Sector - Control PowerPoint Slide Shows with Windows Mobile

“Windows Vista includes a technology called Windows SideShow® that allows the PC to drive a variety of secondary display devices as well as receive commands from secondary devices.  Here is a link to end-user information on Windows SideShow.  Here is a link to developer info on Windows SideShow.

Given that the majority of Laptops and Windows Mobile Phones have Bluetooth capabilities, it just makes sense that Windows Mobile should be a Windows SideShow®–compatible device, especially in remote-control applications such as controlling Windows Media Player or a PowerPoint presentation.  The Windows SideShow for Windows Mobile Developer Preview makes this happen.  Here is the three step process to set things up:

  1. Setup a Bluetooth Connection between your Windows Mobile device and Vista
  2. Download and install Windows SideShow for Windows Mobile Dev Preview
  3. Configure Windows SideShow

To change slides, navigate right on your mobile phone's hard navigation button.  To go back, select Back or navigate left on your mobile phone's hard navigation button.  You can also see your slide notes to help keep you on message:

image_36 image_38

To switch presentations, click the Menu with the right soft key and select End Presentation and the screen with the available presentations appears.

I hope that you find the Office PowerPoint Remote gadget as useful as I do.  Be sure to check out the other available gadgets online.

…”

I previously blogged about this here, Windows Vista + SideShow + Windows Mobile = PowerPoint Remote Controller, but the above guide is more complete and starts earlier in the process, with pairing your device through configuration and usage.

This shows how the Windows Mobile device, through the power of SideShow, is much more powerful than just some sort of uber forward/next controller thing.

 

Related Past Post XRef:
Windows Vista + SideShow + Windows Mobile = PowerPoint Remote Controller
Windows SideShow Managed API and Runtime Released - A Managed SideShow...[Insert joke here]
Universal Driver for Windows SideShow Updated to v1.5 - Transports now include USB, Bluetooth and TCP/IP...

Search and Give – Just by using Live Search you can help the world, one search at a time…

Search and Give

image

Search and GiveAbout

“Give back every time you search


Search and Give makes it easy for you to make a world of difference by doing something you do anyway—search the web.

Search and Give is a free and really easy way to give back to any cause that is important to you—a local church, school or food bank to national charitable organizations protecting wildlife or finding a cure—it is your choice. You can choose from over 800,000 non-profit organizations and 100,000 U.S. public, private and parochial K-12 schools. The more you search, the more you give.

Here’s how it works.

Every time you use Microsoft Live Search to search the web, you earn a penny for your cause. Microsoft tracks your earnings and makes an annual collective donation to your selected organization. The more people who use Search and Give to give to that organization, the more money that organization gets every year. So, tell your friends and family and see it all add up.

12 months - 100 searches per month

Sign up and let the giving begin

All you need to do is sign up, select the organization you want to give to, and start searching. To make it really easy, select Search and Give as your default home page or bookmark it for quick access. You can also track your giving through the site to see how much you have earned for your cause.

It’s really this easy to make a real difference. Get started today!” [Page leached in full]

By using a search engine I’m already using (sometimes) I can have Microsoft give money to my son’s school? Oh yeah, signed up.

(via All Backed Up - SEARCH and GIVE ... a new way to 'search' and 'give'...)

 

Related Past Post XRef:
IM Your Way to A Better World

FFLib.NET (Alpha) – All the FFMPEG based (not wrapped) goodness in a free .Net package

FFLib.Net - FFlib.NET released!

“Are you web developer? Are you looking for video conversion library for long time? So, be happy! We are pleased to introduce you the first release of our .NET & FFMPEG based video conversion library - FFlib.NET.

So, FFlib.NET is an FFMPEG based .NET c# library for video conversion services and applications, that you can use totally free. …

  • fully C# managed NET 2.0 library
  • simple and easy to use object model
  • properties for setting video and audio conversion parameters
  • you can disable audio or video stream
  • you can use fflib for audio conversion only
  • single threaded at this time
  • this is first alpha version
  • source code available
  • free for personal and commercial use
  • available full support for developers
  • free future updates for registered users

FFlib.NET is free for everyone, so you don’t need to use FFMPEG executable for your projects no longer. Now you can use FFlib.NET instead of it. If you are still interested,download it from…” [Leach level: 90%]

FFLib.Net

image

Interesting project that I’ll be monitoring. The compiled version is free and the source can be purchased.

(via Dot Net Kicks - FFlib.NET released!)

Store your Media Center TV recordings on your Windows Home Server via the TV Manager v1.0 add-in

Brent's Blog - TV Manager 1.0

“It is finally here, TV Manager 1.0! TV Manager is a Windows Home Server add-in that lets you move your recordings to your Windows Home Server for management and storage.

The biggest feature of TV Manager is the ability to watch your recordings in Media Center as if they were sitting in your Media Center record path.

You can delete recordings from the Windows Home Server Console or using Media Center. You can also play the recordings on non-Media Center PCs using the Windows Home Server Console or Windows Explorer.

TV Manager is free of charge and the client works with Windows XP Media Center 2005 and Vista Media Center. The TV Manager add-in works with or without Windows Home Server Power Pack 1.

Client Requirements:

…”

Okay, I have neither a Home Server or Media Center (besides the Vista on my notebook, which I’m not counting), but I want both (I really miss my Media Center…), so am noting this for future reference.

This seems to make perfect sense, hooking the two together. Let Media Center do what it does best, and leave the storage to the Home Server. And if the Media Center takes a dive, you can still access and view the previously recorded shows… Nice.

 

(via The Road to Know Where - Free "TV Manager" for Microsoft's Windows Home Server)

Thursday, September 04, 2008

Chrome Notes: Isolation achieved via application virtualization?

virtualization.info - Google uses application virtualization to isolate Chrome browser instances

“In June 2007 Google acquired a stealth-mode startup focused on application virtualization called GreenBorder.
As common practice, the search giant never detailed how it planned to use the technology.

Yesterday the company unveiled the first public beta of its own browser, Chrome, featuring the capability to isolate the instances running in each tab.

InformationWeek is reporting that this security feature depends on the GreenBorder technology.

While there’s no official confirmation, it makes sense and leaves open a wide range of possibilities …

…”

Interesting if true…

I believe we’ll be seeing much more application virtualization (AppV) in the future.

One of my big wish list items for Windows 7 is to have AppV included/backed in. Wouldn’t it be cool if we could distribute our .Net apps without worrying about if the correct framework were installed? Just one exe, double-click and go? No install, no setup, no pain to uninstall, no registry/file/etc jacking? The user being able to just click and go? And since a virtualized app's file/registry is sandboxed/virtualized it should help (a little at least) with security too? Talk about the true end to DLL-Hell...

Sure, it's not a silver bullet for all deployments, but still it's got to be better than today's... um... yeah?

 

Related Past Post XRef:
Google's Other Purchase Last Week - GreenBorder (Application Virtualization)

Chrome Notes: Bookmarks, where oh where are you?

So like most of you who are probably reading this, I’ve been playing with Google’s new browser, Chrome.

In this post, I’ll not be going into the differences between it and IE, nor comments on its EULA, its cool factor, etc. What I’ll be talking about is some things, some under the hood things, I’ve looked at.

Some background first.

One of the features of IE that I’ve come to rely on is that I can very easily sync my Favorites. This lets me easily, quickly, with no mus of fus, keep my fav’s on three machines all in sync (via Mesh). It’s simple, I don’t have to change my IE usage habits, etc. Sure it’s not very Web 2.0’ish, but that doesn’t matter to me. What I want is to just have my favorites be the same on my machines… Without that, I’m just not a happy web browser camper…

So one of the first things I looked for with Chrome is how I would sync it’s Bookmarks (aka Favorites).

a) Where are the Chrome Bookmarks stored?

The Chrome Bookmarks are stored in a file called “History” (no extension).

On my systems, I found the History file in the following paths:

Vista:
C:\Users\[YourUserName]\AppData\Local\Google\Chrome\User Data\Default\

XP:
C:\Documents and Settings\[YourUserName]\Local Settings\Application Data\Google\Chrome\User Data\Default\

b) What is the History file?

The History file is a SQLite v3 database.

c) Okay, how I can read/open/view the History file

There are a number of SQLite browsing tools available. The one I used, which was the first free one I found, was the SQLite Database Browser. It’s a fast download and can be run without installation…

Once you have a browsing tool, open the History file…

image

d) So where are the Bookmarks?

The magic is the “starred” table. This table is where the bookmarks are stored, what folder they are in, their order, etc.

image

The actual URLs are stored in the “urls” table (funny that… ;)

image

To get at the URL’s for them you join against the “urls” table.

SELECT starred.title, urls.url
FROM starred
INNER JOIN urls ON urls.id = starred.url_id

 

Okay… Now what?

Now what I’m thinking is that I need to write a utility that will export data from the History DB, put it into a file, sync that file (or post the data to a cloud storage area like S3 or SSDS?) and then write a import utility that will slurp in that file/data… Maybe use the starred.Date_Added column to intelligently add new items. But how to track deletes? hum…

Also I need to look around for the Chrome SDK/API/Doc’s etc to see if I’m being a lamer and if there’s a much easier way to sync/import/export bookmarks…  ;)

Reminder to Self: Using text output as a programming contract is contracting for future failure…

PowerShell Team Blog - Text Output Is Not a Contract

“In PS V1, this is what you get for GET-COMMAND -SYNTAX

PS> Get-Command Get-Process -Syntax
Get-Process [[-Name] <String[]>] [-ComputerName <String[]>] [-Module] [-FileVersionInfo] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>]
Get-Process -Id <Int32[]> [-ComputerName <String[]>] [-Module] [-FileVersionInfo] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>]
Get-Process [-ComputerName <String[]>] [-Module] [-FileVersionInfo] -InputObject <Process[]> [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>]

I look at that and a little bit of vomit comes up into my mouth.  I've been experimenting with my own radically different version but that probably won't ship in V2 and we'd like V2 to be better.  I mentioned that if we just put a newline between the parametersets and got rid of the ubiquitous parameters - we would be TONS ahead.  This is what it would look like:

MUCH better right?  As we discussed this, someone pointed out that this change would break any scripts that parsed the text output for the V1 version.  At first I looked at the person as though they had a rat's tail hanging out of their mouth (thinking - Get-Command gives you a structured object - why would you render it to text and then parse it?!!!).  Then I realized that we hadn't actually stated what I think is obvious so now I'll state it:

In PowerShell - TEXT OUTPUT IS NOT A CONTRACT.

In UNIX, text output is effectively a programming contract because that is what the whole system is built upon.  One command outputs text and other programs know what to expect so they parse the text to get the appropriate data elements so that they can code against it. …

That is the world of TEXT parsing.  In PowerShell - we provide an object-based world where you don't have to parse the text to get the properties that you want - you just ask for property and you get it - no fuss, no muss.  Given that - in Powershell TEXT OUTPUT IS NOT A CONTRACT.  Said aother way -
We reserve the right to radically change our text rendering to improve our customer experience.
(God knows we have some improvements to make. :-) )

…”

The title and content of this post was one that I wanted to call out and re-empathize. Using text output as a contract is contracting for future failure…

Wednesday, September 03, 2008

New home for NHibernate – NH Forge

NH Forge - The NHibernate community site.

 image

“Welcome to the NHibernate community site!!

Since the end of 2007 NHibernate has enjoyed increasing popularity as an object-relational mapping framework for .NET software projects.  Along with that came a steady increase in the community of NHibernate users, contributors, and related projects.  As this community grew and matured, we have seen an explosion in the number of blogs, FAQs, training materials, discussion groups, and other NHibernate-related resources on the Internet.

Even the 'formal' official resources for NHibernate have proven insufficient to the growing task of supporting this community.  The documentation in its static HTML form is difficult to search, index, and use as a live reference.  The discussion forum has limited interactivity and flexibility, and there isn't a structured way, for other community members, to contribute to the centralized content.

As related contributing projects have grown up to offer additional services to extend NH, the resources for these projects have been similarly scattered across the Internet and its difficult to get a complete picture of the entire universe of NH tools and capabilities for anyone considering using these technologies.  This in turn hinders the adoption of this wider collection of tools as many NH users are simply unaware of their existence.

The challenge of NH Forge is provide a single centralized resource for all things related to NH offering a community blog, an easy to use WIKI, other related community-oriented tools.

…”

This looks like a great new resource for NHibernate…

(via SourceForge NHibernate - New NHibernate Community site)

 

Related Past Post XRef:
NHibernate v2.0 Released (i.e. 2.0 GA)
How to gain ORM and influence databases – NHibernate, The Summer Screencast Series

Saving/Exporting your XAML Canvas to an Image/Bitmap/PNG

a geek trapped in a cool guy’s body - How to Save XAML as an Image

“Here’s a quick note to self that you may enjoy. I suck at art. Didn’t use to always, but it requires too much brain power. But I’m not bad at getting WPF to draw what I want. I had a logo in mind for this site and used WPF to generate it after unsuccessfully getting Paint.NET to do the same.

I recently needed to use this code again, but forgot how I solved it. So, rather than hunt it down on Google again, I came home and loaded up ye olde Windows Live Writer to write this post.

To save the XAML you want as an image, put the elements you want to save into a canvas element called canvas. Then run the following code.

I hooked up a key binding to a command to execute this code, but you could use a button click too. It’ll save the elements in canvas to a file in the same folder as the executable, called logo.png, but you can change that if you want. You can also you a different encoder if you like. They’re in System.Windows.Media.Imaging.

…”

This is one of those “I know I’ll need but never be able to find again in the future” code snips…

Tuesday, September 02, 2008

MSBuild your way to ZIP Deliveries – Using MSBuild and MSBuild Community Tasks to zip your Build

Ben Hall's Blog - Using MSBuild to create a deployment zip

“Automated builds are one of the core fundamental musts for software development. However, your build doesn't just have to build the solution and execute your unit tests. For IronEditor, my build also creates two zip files. One zip is the output from the build for archiving purposes, the second is my deployment zip - the zip which actually gets pushed up to CodePlex containing only the files required by the application. In this post, I will cover how you can get MSBuild to zip your build output.

To use zipping functionality within your build scripts, you need to use the MSBuild Community Tasks which is a great collection of MSBuild extensions and a must if you are using MSBuild.

…”

This is something I’d like to take a closer look at. Like Ben, I have some CodePlex projects were this could come in handy. Right now I manually zip my setup.exe/MSI and then upload it. It would be nice to automate some of that. Also it would be cool to also zip the source for the given build so that could be uploaded with the release (sure I check everything in, but having a zip with the release would be nice too).

 

Related Past Post XRef:
SolutionZipper - VS2005 Addin to Clean and Zip in One Step

The SDC Tasks Projects is alive and well... v2.1.2978 Released
SDC Tasks Project's New Home on CodePlex
MS SDC.Tasks, a MSBUILD tasks library with over a hundred new tasks...

MS UK Enterprise Solutions Build Framework (SBF) Updated
MSBuild Community Tasks Project
More on the Solution Build Framework (SBF) (MSBuild Tasks) From MS UK

A RoboCopy TeamBuild Custom Task
Auto Incrementing your TeamBuild ClickOnce Deployed Application
Auto Increment Build Numbers when using TFS & TeamBuild

Monday, September 01, 2008

Putting the final, professional touches on your UserControl - “How to use UITypeEditors, Smart Tags, ControlDesigner Verbs, and Expandable Properties to make Design Time editing easier.”

CodeProject - Rich Design Time Editing with UITypeEditors (VB.NET) 

“Introduction

This article assumes you have basic knowledge on creating a simple UserControl, so I am not going to go into much detail on creating one here. To demonstrate the Property Editors I desided to make a control that draws itself in a selected shape. This gave me lots of options to demonstrate different design time editors. This Demo uses UITypeEditors, Smart Tags, ControlDesigner Verbs, and Expandable Properties.

ShapeTypeEditor

Another example of the DropDown is the RadiusInnerTypeEditor. It uses the DropdownRadiusInner UserControl, which contains a TrackBar and a Shape Control. If the Shape is a Star sliding the TrackBar back and forth changes the RadiusInner property value on the star shape. When you get it the way you want, Check the Apply button to call CloseDropDown

RadiusInnerTypeEditor

 

The last Dropdown is the BlendTypeEditor. It uses the DropdownColorBlender UserControl, which is a slight variation on my ColorBlender UserControl[^] The UserControl may be more complex but there is very little difference in the EditValue Method.

BlendTypeEditor

…”

This is a great article/project on adding professional finish to a UserControl via rich design time editing features. Having all these things, UITypeEditors, Verbs, etc, in a single article is very nice. I thought the article was well written, with a good mix of images, copy and code snips.

If you’re doing UserControls and have been hesitant to provide rich propertygrid UI Type Editors because they seemed  “hard”, then take a look at this…

Hopefully we’ll be getting a new Windows Live Writer beta soon…

Saw this this morning and I sure hope it means we’ll be getting a new beta/release in the coming month…

kg61EE1.tmp

I’ve been running the latest WLW beta (14.0.3913.522) since it came out and am very happy with it. Some of its new usability features make me dread going back to 1.0 RTM

Keeping my fingers crossed…

 

Related Past Post XRef:
Windows Live Writer 1.1 CTP Users – No, you’re not going crazy, it IS sometimes poking in those extra paragraph tags…
And you thought Windows Live Writer Development had stalled... NOPE! A new WLW CTP is now available, with some cool new features and plugin goodness

Sunday, August 31, 2008

Batch download the VS 2008 SP1 source/symbols with the updated Net Mass Downloader

John Robbins' Blog - NetMassDownloader 1.5 Has Complete Support for VS 2008 SP1

“Now that the .NET Reference Source Code for .NET 3.5 SP1 has made it up to Microsoft's servers, Kerem Kusmezer and I updated NetMassDownloader to support populating your symbol server cache directory with all the source code and symbols. Microsoft did some tweaks to the debugger with SP1 and the symbols are expected to be in a MicrosoftPublicSymbols directory under your symbol cache in order to download the reference source files in the debugger. I also cleaned up the program output, fixed a problem where NetMassDownloader wasn't delete temporary files correctly, and handled the case where the download PDB files have source server information but is missing the HTTP download info.

If you've used a prior version of NetMassDownloader, it's probably best if you delete your cache directory and start fresh. Also note that NetMassDownloader 1.5 assumes that if you are using VS 2008 you have applied SP1. VS 2005 and CodeGear are still supported as they were before.

…”

Sometimes it’s just easier to get it all at once, before you need it…

Just a reminder that this project is hosted on CodePlex, in all its C# source glory…

 

Related Past Post XRef:
Download all the .Net Source/Reference code/PDB's at once with .Net Mass Downloader
It's .Net Source Day! Let the Source Loose.... Today is the day you can configure VS2008 to grab the actual source code to the .Net Framework and step into it as you debug...