Saturday, November 01, 2008

NetMon API – Capture, Parse and and Capture File Access (with Managed P/Invoke example too)

Network Monitor - Intro to the Network Monitor API

“I’ve recently played with a new tool here at MS, which analyzes HTTP traffic and provides performance information so that you can better tune your web servers and applications. I also have seen an internal SMB expert that summarizes SMB traffic, for instance open files and connects. These types of experts provide a protocol specific view of network data that is tailored to a specific protocol. The NMAPI provides a powerful way to access our parsing and capturing engine directly. This gives you a lot of flexibility to analyze network traffic in ways you can only imagine. I want to give a quick overview of how the API works so that you can harness the power of the NMAPI.

VRTA – Visual Round Trip Analyzer

Before I dig into the API, let me show you an example of what the API can accomplish for you. It is available here:

http://www.microsoft.com/downloads/details.aspx?familyid=119F3477-DCED-41E3-A0E7-D8B5CAE893A3&displaylang=en

This tool was recently released and allows you to visualize HTTP traffic so that you can diagnose performance of your HTTP server or Browser.

VRTA

What Does the API Allow?

I like to divide the API into 3 areas, though they tend to overlap some. They are Capturing, Parsing, and Capture File access. So let me start by explaining what each can do.

Capturing: You have most of the same capabilities as you do in the UI. You can Start/Stop/Pause the capture engine on any of the network interfaces. The API lets you enumerate the available adapters and setup a unique callback for each one, if you want. Each time a frame arrives, the callback is sent the raw frame which you can then evaluate or simply save to a capture file.

Parsing: With access to the parsing engine, you can inspect any data field that is parsed. You can reassemble data on the fly to quickly parse for a few fields or enumerate through them all. You also have the same UI filtering language available to you in the API. You can define a filter as part of your frame parser and then evaluate that filter, very quickly, on each frame.

Capture File Access: The API also allows you to read and write capture files using the Netmon 2.1 file format for NM3.2.

Where is the SDK?

Almost everything is included when you install NM3.2. This includes NetMonSDK.CHM which describes each of the API and contains examples as well. The only other requirement is that you need to install the WDK. This is because we reference the NDIS headers for each adapter, which is one of the functions the API provides.

For more information on setting up your environment, see the section called Network Monitor API Overview in the CHM file. This can be accessed from the help menu in NM3.2.

Managed Code

While we haven’t created an official Managed wrapper, we have included a simple NetmonAPI.CS file which uses PInvoke to call the DLL directly. We hope to release a more proper wrapper externally at some point. Perhaps in the shorter term we can also start an open project which wraps the API.

…”

I’m such a sucker for Managed code’able API’s… ;)

I’m thinking that this could be useful to build a custom capture feature into an app to help diagnose network issues. Think about a feature where, either on demand or automagically, an application starts capturing traffic, say based on some local benchmark, to help diagnose an intermittent connectivity or performance issue. Then submits that info to a central repository for analysis… Would have to look into the deployment of it (NetMon) though.

 

Related Past Post XRef:
Network Monitor 3.2 (aka NetMon, NM3) Beta Released – Now with application network conversation tracking UI
NetMon 3.1 Released
Network Monitor 3 (aka NetMon 3, aka NM3) Re-released for Vista
NetMon 3.0 RTW

Friday, October 31, 2008

UAT – The Guide (User Acceptance Test Engineering Guidance - Beta)

CodePlex - patterns & practices Acceptance Test Engineering Guidance

“…

ATE_small

Project Description

The Acceptance Test Engineering Guide will provide guidance for technology stakeholders (developers, development leads, testers, test leads, architects, etc.) and business stakeholders (managers, customers, end users, etc) on the discipline of acceptance testing.

Why acceptance testing?

patterns & practices has produced just a few guides related to testing (including performance testing, security testing of web apps, and testing of .NET application blocks). However, we hear a lot of requests from our customers for guidance on testing and test strategy in general, and also guidance on every type of testing you can think of. Based on this customer feedback, and a look at what guidance was available, we determined that acceptance testing was the next area to invest in.

What is acceptance testing?

Working definitions for a number of terms are available in our Draft Glossary. The current definition that is framing our work and discussions is:
  • Acceptance Testing: Planned evaluation of a system by customers/customer proxies to assess to what degree it satisfies their expectations.

What types of things you can learn in the guide?

If any of the following goals apply to you, you will want to check out the the guide.

ATE_consumption_model

…”

I don’t know near enough about “real” UAT and as I’m trying to increase our QA depth at work, this guide may come in handy…

(via The Liquidator - Acceptance Test Engineering Guide (BETA1) – From Codeplex)

Blacklight 1.0 RTM’s - WPF/SilverLight “Controls for Designers”

Blacklight - V1.0 (Nov08)

“…

This is the release v1.0 (Nov08) of Blacklight. This release contains controls and samples for WPF & Silverlight. There are 5 downloads available...

    • Blacklight.Silverlight Source - the source code for the controls and showcase for Silverlight 2.
    • Blacklight.Silverlight Binaries - the binaries for the controls and showcase for Silverlight 2.
    • Blacklight.Wpf Source - the source code for the controls and demo application for WPF.
    • Blacklight.Wpf Binaries - the binaries for the controls and demo application for WPF.
    • Read Me - the 'release notes' for this release, including all of the new controls + screenshots.


Read the 'Read Me' PDF for all of the information about this release!

See the showcase here: http://mightymeaty.members.winisp.net/blacklight.silverlight/

…”

Not to be lost in the PDC hangover…

 

Related Past Post XRef:
Blacklight – The Silverlight UX code sharing project (aka “Mass hysteria, Developers and Designers living (in the UX) together…”)

PDC 2008 Quick Video Link List updated with link verification

Just a quick note to let you know that I’ve updated my quick and dirty PDC 2008 video link list (PDC2008 Quick Video Link List (Updated: Now with link verification) ) to only link to resources that actually exist, that the list creator now checks to make sure there’s a page/resource/no 404 when building a given link.

The “does this page/url exist” feature was based on the code from Dor Rotman`s Blog - How to check if a file exists over HTTP. Using the request.Method = “HEAD” makes it fairly efficient and should not overly slam the web server since we’re not getting the actual page/file, just the HEADER for the page/file (at least that’s how I understand it to work)

I’ll re-gen the list and update the post a couple times next week to pick up any newly available resources…

 

Related Past Post XRef:
Another way to get all the PDC Video Sessions Downloaded - The DownloadThemAll FireFox addon and Luciano Evaristo Guerche’s PDC link lists
PDC2008 Quick Video Link List (Updated: Now with link verification)

Thursday, October 30, 2008

Another way to get all the PDC Video Sessions Downloaded - The DownloadThemAll FireFox addon and Luciano Evaristo Guerche’s PDC link lists

Luciano Evaristo Guerche - How to download PDC Sessions using DownThemAll! Firefox addon

“Step 1: Open the blog post where links to the PDC Sessions you want are

image

While you’re on his site, also check out his video link lists for PDC2008. His list is much prettier than mine (but I’m currently adding 404 checking, so mine will be… um… yeah… ;)

 

Related Past Post XRef:
PDC2008 Quick Video Link List

PDC2008 Quick Video Link List (Updated: Now with Keynotes)

Last List Update: 11/8/2008 @ 2:20 PM PST (Catalog/List now based on Channel9 RSS feed, which resulted in 9 new entries, including the Keynotes! ;)

Past Update: 11/1/2008 @ 11:25 AM PDT (Fixed MP4, ZIP link issues and now with links, on titles, to the very cool Channel 9 PDC2008 pages)

Because I’m lazy (err… I mean… um… efficient with my time? Yeah… that) I wanted an easier way to get at all the videos for PDC2008. So being a developer, I reverse engineered the PDC video page and hacked together a quick and dirty list of Session and related video/pptx links. ;)

Please note that some of these links may not yet work, may never work, may be changed by Microsoft at any time, YMMV, etc, etc, etc. If it doesn’t work, please try accessing the session via the “one true source.”

Quick Video List, sort by Title (as of 11/8/2008 @ 2:20 PM PST)

TitleWMV-HQWMVZuneMP4ZIPPPTX
BB01 A Lap Around the Azure Services PlatformWMV-HQWMVZuneN/AN/APPTX
BB02 Architecture of the .NET ServicesWMV-HQWMVZuneN/AN/APPTX
BB03 SQL Services : Under the HoodWMV-HQWMVZuneMP4N/APPTX
BB04 Live Services: A Lap around the Live Framework and Mesh ServicesWMV-HQWMVZuneN/AN/APPTX
BB05 Live Services: Building Applications with the Live FrameworkWMV-HQWMVZuneN/AN/APPTX
BB06 Live Services: Mesh Services Architecture and ConceptsWMV-HQWMVZuneN/AN/APPTX
BB07 SQL Server 2008: Developing Large Scale Web Applications and Services WMV-HQWMVZuneN/AN/APPTX
BB08 Microsoft Dynamics CRM: The Appealing Business ApplicationWMV-HQWMVZuneMP4N/APPTX
BB09 Microsoft Office Communications Server and Exchange: Platform FuturesWMV-HQWMVZuneMP4N/APPTX
BB10 Live Services: Deep Dive on Microsoft Virtual EarthWMV-HQWMVZuneMP4ZIPPPTX
BB11 Identity Roadmap for Software + ServicesWMV-HQWMVZuneMP4N/APPTX
BB12 .NET Services: Messaging Services - Protocols, Protection, and How We ScaleWMV-HQWMVZuneMP4N/APPTX
BB13 SharePoint 2007: Creating SharePoint Applications with Visual Studio 2008WMV-HQWMVZuneMP4N/AN/A
BB14 SQL Services: FuturesWMV-HQWMVZuneMP4N/APPTX
BB15 SQL Server: Database to Data Platform - Road from Server to Devices to the CloudWMV-HQWMVZuneMP4N/APPTX
BB16 SQL Server 2008: Beyond RelationalWMV-HQWMVZuneMP4ZIPPPTX
BB18 "Dublin": Hosting and Managing Workflows and Services in Windows Application ServerWMV-HQWMVZuneMP4N/APPTX
BB19 Live Services: Live Framework Programming Model Architecture and InsightsWMV-HQWMVZuneMP4N/APPTX
BB20 Live Services: Making your Application More SocialWMV-HQWMVZuneMP4N/APPTX
BB22 Identity: Live Identity Services DrilldownWMV-HQWMVZuneN/AN/APPTX
BB23 A Lap around SQL ServicesWMV-HQWMVZuneN/AN/APPTX
BB24 SQL Server 2008: Deep Dive into Spatial DataWMV-HQWMVZuneMP4N/APPTX
BB25 SQL Server 2008: New and Future T-SQL ProgrammabilityWMV-HQWMVZuneN/AN/APPTX
BB26 SQL Server 2008: Business Intelligence and Data VisualizationWMV-HQWMVZuneN/AN/APPTX
BB27 .NET Services: Orchestrating Services and Business Processes Using Cloud-Based WorkflowWMV-HQWMVZuneMP4N/APPTX
BB28 .NET Services: Access Control Service DrilldownWMV-HQWMVZuneN/AN/APPTX
BB29 Identity: Connecting Active Directory to Microsoft ServicesWMV-HQWMVZuneMP4N/APPTX
BB30 Live Services: Building Mesh-Enabled Web Applications Using the Live FrameworkWMV-HQWMVZuneN/AN/APPTX
BB31 Live Services: FeedSync and Mesh Synchronization ServicesWMV-HQWMVZuneMP4N/APPTX
BB32 Microsoft Dynamics CRM: Building Line-of-Business ApplicationsWMV-HQWMVZuneN/AN/APPTX
BB33 Dynamics Online: Building Business Applications with Commerce and Payment APIsWMV-HQWMVZuneMP4N/APPTX
BB34 Live Services: Notifications, Awareness, and CommunicationsWMV-HQWMVZuneMP4N/APPTX
BB35 Live Services: The Future of the Device MeshWMV-HQWMVZuneMP4N/APPTX
BB36 FAST: Building Search-Driven Portals with Microsoft Office SharePoint Server 2007 and Microsoft SilverlightWMV-HQWMVZuneMP4N/APPTX
BB37 SQL Server 2008: Developing Secure ApplicationsWMV-HQWMVZuneN/AN/APPTX
BB38 .NET Services: Connectivity, Messaging, Events, and Discovery with the Service BusWMV-HQWMVZuneMP4N/APPTX
BB39 .NET Services: Logging, Diagnosing, and Troubleshooting Applications Running Live in the CloudWMV-HQWMVZuneMP4N/AN/A
BB40 Sync Framework: Enterprise Data in the Cloud and on DevicesWMV-HQN/AZuneN/AN/APPTX
BB41 Live Services: What I Learned Building My First Mesh ApplicationWMV-HQWMVZuneN/AZIPPPTX
BB42 Identity: "Geneva" Server and Framework OverviewWMV-HQWMVZuneMP4N/APPTX
BB43 Identity: "Geneva" Deep DiveWMV-HQN/AZuneN/AN/APPTX
BB44 Identity: Windows CardSpace "Geneva" Under the Hood WMV-HQWMVZuneMP4N/APPTX
BB45 Office Communications Server 2007 R2: Enabling Unified CommunicationsWMV-HQWMVZuneN/AN/APPTX
BB46 Exchange Web Services Managed API: Unified Communications Development for Exchange WMV-HQWMVZuneMP4N/APPTX
BB47 SharePoint 2007: Advanced Asynchronous Workflow MessagingWMV-HQWMVZuneMP4N/APPTX
BB48 Microsoft Advertising Platform: A Lap AroundWMV-HQWMVZuneMP4N/APPTX
BB49 Microsoft Advertising Platform: A Day in the Life of a ClickWMV-HQWMVZuneMP4N/APPTX
BB51 Live Services: Programming Live Services Using Non-Microsoft TechnologiesWMV-HQWMVZuneMP4N/APPTX
BB52 SQL Services: Tips and Tricks for High-Throughput Data-Driven ApplicationsWMV-HQWMVZuneN/AN/APPTX
BB53 SharePoint Online: Extending Your ServiceWMV-HQWMVZuneMP4N/APPTX
BB54 Designing Your Application to ScaleWMV-HQWMVZuneN/AN/APPTX
BB55 .NET Services: Access Control In Microsoft .NET ServicesWMV-HQWMVZuneMP4N/APPTX
BB56 Showcase: Industry Leaders Moving to the CloudWMV-HQWMVZuneMP4N/APPTX
BB57 Microsoft Dynamics AX: Building Business Process into Your ApplicationWMV-HQWMVZuneMP4N/APPTX
BB58 Case Study: Bridging On-Premises with the CloudWMV-HQWMVZuneMP4N/APPTX
BB59 Behind the Scenes: How We Built a Multi-Enterprise Supply Chain ApplicationWMV-HQWMVZuneMP4N/APPTX
ES01 Developing and Deploying Your First Windows Azure ServiceWMV-HQWMVZuneN/AN/APPTX
ES02 Windows Azure: Architecting & Managing Cloud ServicesWMV-HQWMVZuneN/AN/APPTX
ES03 Windows Azure: Cloud Service Development Best Practices WMV-HQWMVZuneMP4N/APPTX
ES04 Windows Azure: Essential Cloud Storage ServicesWMV-HQWMVZuneN/AN/APPTX
ES06 Developing with Microsoft .NET and ASP.NET for Server Core WMV-HQWMVZuneN/AN/APPTX
ES07 Windows Azure: Modeling Data for Efficient Access at ScaleWMV-HQWMVZuneMP4N/APPTX
ES09 Enabling Test Automation Using Windows Server 2008 Hyper-VWMV-HQWMVZuneMP4N/APPTX
ES10 Developing Solutions for Windows Server 2008 Hyper-V Using WMIWMV-HQWMVZuneN/AN/APPTX
ES11 Developing Connected Home Applications and Services for Windows Home ServerWMV-HQWMVZuneN/AN/APPTX
ES12 Exposing Connected Home Services to the Internet via Windows Home ServerWMV-HQWMVZuneMP4N/APPTX
ES13 How to Develop Supercomputer ApplicationsWMV-HQWMVZuneN/AN/APPTX
ES14 IIS 7.0 and Beyond: The Microsoft Web Platform RoadmapWMV-HQWMVZuneMP4N/APPTX
ES15 Web Application Packaging and DeploymentWMV-HQWMVZuneMP4N/APPTX
ES16 A Lap Around Windows AzureWMV-HQWMVZuneN/AN/APPTX
ES17 Windows Azure: Programming in the CloudWMV-HQWMVZuneMP4N/APPTX
ES19 Under the Hood: Inside the Windows Azure Hosting EnvironmentWMV-HQWMVZuneMP4N/APPTX
ES20 Developing Applications for More Than 64 Logical Processors in Windows Server 2008 R2WMV-HQWMVZuneN/AN/APPTX
ES21 Windows 7 Presentation Virtualization: Graphics Remoting ( RDP) Today and TomorrowWMV-HQWMVZuneMP4N/APPTX
ES22 Extending Terminal Services and Hyper-V VDI in Windows 7WMV-HQWMVZuneMP4N/APPTX
ES23 Windows 7: Optimizing Applications for Remote File Services over the WANWMV-HQWMVZuneMP4N/APPTX
ES24 PowerShell: Creating Manageable Web ServicesWMV-HQWMVZuneN/AN/APPTX
ES25 Showcase: Windows Azure Enables Live MeetingWMV-HQWMVZuneMP4N/APPTX
ES29 Showcase: Windows Azure Enables /Nsoftware and Full ArmorWMV-HQWMVZuneMP4N/APPTX
ES30 Datacenters and Resilient ServicesWMV-HQN/AZuneMP4N/APPTX
ES31 Showcase: How HP Built their Magcloud Service on Windows AzureWMV-HQWMVZuneN/AN/APPTX
ES32 Microsoft Application Virtualization 4.5WMV-HQWMVZuneMP4N/APPTX
KYN01 Day One Keynote - Ray Ozzie, Amitabh Srivastava, Bob Muglia and David Thompson WMV-HQWMVZuneMP4N/AN/A
KYN02 Day Two Keynote - Ray Ozzie, Steven Sinofsky, Scott Guthrie and David Treadwell WMV-HQWMVZuneN/AN/AN/A
KYN03 Day Two Keynote - Chris Anderson and Don Box WMV-HQWMVZuneMP4N/AN/A
KYN04 Research in the 21st CenturyWMV-HQWMVZuneMP4N/AN/A
PC01 Windows 7: Web Services in Native Code WMV-HQWMVZuneMP4N/APPTX
PC02 Windows 7: Extending Battery Life with Energy Efficient ApplicationsWMV-HQWMVZuneN/AN/APPTX
PC03 Windows 7: Developing Multi-touch ApplicationsWMV-HQWMVZuneMP4N/APPTX
PC04 Windows 7: Writing Your Application to Shine on Modern Graphics HardwareWMV-HQWMVZuneN/AN/APPTX
PC05 Windows 7: Unlocking the GPU with Direct3DWMV-HQWMVZuneMP4N/APPTX
PC06 Deep Dive: Building an Optimized, Graphics-Intensive Application in Microsoft Silverlight WMV-HQWMVZuneN/AN/APPTX
PC07 WPF: Extensible BitmapEffects, Pixel Shaders, and WPF Graphics FuturesWMV-HQWMVZuneMP4N/APPTX
PC10 Microsoft Silverlight 2 for Mobile: Developing for Mobile Devices WMV-HQN/AZuneN/AN/APPTX
PC11 Microsoft Silverlight Futures: Building Business Focused Applications WMV-HQWMVZuneN/AN/APPTX
PC12 Deep Dive: The New Rendering Engine in Microsoft Internet Explorer 8 WMV-HQWMVZuneMP4N/APPTX
PC13 Windows 7: Building Great Audio Communications ApplicationsWMV-HQWMVZuneMP4N/APPTX
PC14 Windows 7 Scenic Ribbon: The next generation user experience for presenting commands in Win32 applications.WMV-HQWMVZuneMP4N/APPTX
PC15 Windows 7: Benefiting from Documents and Printing ConvergenceWMV-HQWMVZuneMP4N/APPTX
PC16 Windows 7: Empower users to find, visualize and organize their data with Libraries and the ExplorerWMV-HQWMVZuneN/AN/APPTX
PC17 Developing for Microsoft SurfaceWMV-HQWMVZuneMP4N/APPTX
PC18 Windows 7: Introducing Direct2D and DirectWriteWMV-HQWMVZuneMP4N/APPTX
PC19 Windows 7: Designing Efficient Background ProcessesWMV-HQWMVZuneMP4N/APPTX
PC20 ASP.NET 4.0 RoadmapWMV-HQWMVZuneMP4N/APPTX
PC21 ASP.NET MVC: A New Framework for Building Web ApplicationsWMV-HQWMVZuneN/AZIPPPTX
PC22 Windows 7: Design Principles for Windows 7WMV-HQWMVN/AMP4N/APPTX
PC23 Windows 7: Integrate with the Windows 7 DesktopWMV-HQWMVN/AN/AN/APPTX
PC24 Windows 7: Welcome to the Windows 7 DesktopWMV-HQWMVZuneN/AN/APPTX
PC25 Windows 7: The Sensor and Location Platform: Building Context-Aware ApplicationsWMV-HQWMVZuneMP4N/APPTX
PC26 Microsoft Visual Studio: Building Applications with MFCWMV-HQWMVZuneN/AN/APPTX
PC27 Microsoft Silverlight, WPF and the Microsoft .NET Framework: Sharing Skills and CodeWMV-HQWMVN/AN/AN/APPTX
PC29 Microsoft Silverlight 2: Control ModelWMV-HQWMVZuneMP4N/APPTX
PC30 ASP.NET Dynamic DataWMV-HQWMVZuneMP4N/APPTX
PC31 ASP.NET and JQueryWMV-HQN/AN/AN/AN/APPTX
PC32 ASP.NET AJAX FuturesWMV-HQWMVZuneMP4ZIPPPTX
PC33 Microsoft Visual Studio: Easing ASP.NET Web DeploymentWMV-HQWMVN/AN/AN/APPTX
PC34 Open XML Format SDK: Developing Open XML SolutionsWMV-HQWMVZuneMP4ZIPPPTX
PC35 Silverlight Controls RoadmapWMV-HQWMVZuneMP4N/APPTX
PC39 Inside the Olympics: An Architecture and Development ReviewWMV-HQWMVN/AN/AN/APPTX
PC40 SQL Server Compact: Embedding in Desktop and Device ApplicationsWMV-HQWMVZuneMP4N/APPTX
PC41 ASP.NET: Cache ExtensibilityWMV-HQWMVZuneN/AN/APPTX
PC42 Windows 7: Deploying Your Application with Windows Installer (MSI) and ClickOnceWMV-HQWMVZuneN/AN/APPTX
PC43 Deep Dive: What's New with user32 and comctl32 in Win32WMV-HQWMVZuneMP4ZIPPPTX
PC44 Windows 7: Programming Sync Providers That Work Great with WindowsWMV-HQWMVZuneMP4N/APPTX
PC45 WPF: Data-centric Applications Using the DataGrid and Ribbon ControlsWMV-HQWMVZuneMP4N/APPTX
PC46 WPF RoadmapWMV-HQWMVZuneMP4N/APPTX
PC47 Microsoft Expression Blend: Tips & TricksWMV-HQWMVZuneMP4N/APPTX
PC48 Research: Designing the World Wide TelescopeWMV-HQWMVZuneMP4N/AN/A
PC49 Microsoft .NET Framework: CLR FuturesWMV-HQWMVZuneMP4N/APPTX
PC50 Windows 7: Using Instrumentation and Diagnostics to Develop High Quality SoftwareWMV-HQWMVZuneMP4N/APPTX
PC51 Windows 7: Best Practices for Developing for Windows Standard UserWMV-HQWMVZuneMP4N/APPTX
PC52 Windows 7: Writing World-Ready ApplicationsWMV-HQWMVZuneMP4N/APPTX
PC53 Building High Performance JScript ApplicationsWMV-HQWMVZuneN/AN/APPTX
PC54 Mono and .NETWMV-HQWMVN/AMP4N/APPTX
PC55 Oomph: A Microformat ToolkitWMV-HQWMVZuneMP4N/APPTX
PC56 Windows Embedded "Quebec": Developing for DevicesWMV-HQWMVZuneN/AN/APPTX
PC58 Framework Design GuidelinesWMV-HQWMVZuneMP4N/APPTX
PC59 Commerce Server "Mojave": OverviewWMV-HQWMVZuneMP4N/APPTX
PC60-V Driving for software quality through customer feedbackWMV-HQWMVZuneN/AN/AN/A
PC61-V Developing compatible applications for WindowsWMV-HQWMVZuneMP4N/AN/A
PC62-V Hands On Analysis with Windows Performance Toolkit (General)WMV-HQWMVZuneN/AN/AN/A
PC63-V Best practices for signing and verifying code on Windows 7WMV-HQWMVZuneN/AZIPN/A
PC64-V The New COM API for Accessibility and Automation in Windows 7WMV-HQN/AN/AN/AN/APPTX
SYMP01 Parallel Symposium: Addressing the Hard Problems with ConcurrencyWMV-HQWMVN/AN/AN/APPTX
SYMP02 Parallel Symposium: Application Opportunities and ArchitecturesWMV-HQN/AN/AN/AN/APPTX
SYMP03 Parallel Symposium: Future of Parallel ComputingWMV-HQWMVN/AN/AN/AN/A
SYMP04 Services Symposium: Expanding Applications to the CloudWMV-HQWMVZuneMP4N/APPTX
SYMP05 Services Symposium: Enterprise Grade Cloud ApplicationsWMV-HQWMVZuneMP4N/AN/A
SYMP06 Services Symposium: Cloud or No Cloud, the Laws of Physics Still ApplyWMV-HQWMVZuneN/AN/APPTX
TL01 Office Business Applications: Enhanced DeploymentWMV-HQWMVZuneMP4N/APPTX
TL02 Under the Hood: Advances in the .NET Type SystemWMV-HQWMVZuneN/AN/APPTX
TL03 Microsoft Visual Studio Team System: Software Diagnostics and Quality for ServicesWMV-HQWMVZuneMP4N/APPTX
TL04 Microsoft Visual Studio Team System Team Foundation Server: How We Use It at MicrosoftWMV-HQWMVZuneMP4N/APPTX
TL06 WCF 4.0: Building WCF Services with WF in Microsoft .NET 4.0WMV-HQWMVZuneMP4N/APPTX
TL07 Developing Applications Using Data ServicesWMV-HQWMVZuneMP4N/APPTX
TL08 Offline-Enabled Data Services and Desktop ApplicationsWMV-HQWMVZuneMP4N/APPTX
TL09 Agile Development with Microsoft Visual StudioWMV-HQWMVZuneMP4N/APPTX
TL10 Deep Dive: Dynamic Languages in Microsoft .NETWMV-HQWMVZuneMP4ZIPPPTX
TL11 An Introduction to Microsoft F#WMV-HQWMVZuneMP4N/APPTX
TL12 Future Directions for Microsoft Visual BasicWMV-HQWMVZuneN/AN/APPTX
TL13 Microsoft Visual C++: 10 Is the New 6WMV-HQWMVZuneN/AN/APPTX
TL14 Project "Velocity": A First LookWMV-HQWMVZuneMP4N/APPTX
TL15 Architecture without Big Design Up FrontWMV-HQWMVZuneMP4N/APPTX
TL16 The Future of C#WMV-HQWMVZuneN/AN/APPTX
TL17 WF 4.0: A First LookWMV-HQWMVZuneMP4N/APPTX
TL18 "Oslo": Customizing and Extending the Visual Design ExperienceWMV-HQWMVZuneMP4N/APPTX
TL19 Microsoft Visual Studio: Bringing out the Best in Multicore SystemsWMV-HQWMVZuneN/AN/APPTX
TL20 Entity Framework FuturesWMV-HQWMVZuneN/AN/APPTX
TL21 WF 4.0: Extending with Custom ActivitiesWMV-HQWMVZuneMP4N/APPTX
TL22 Concurrency Runtime Deep Dive: How to Harvest Multicore Computing ResourcesWMV-HQWMVZuneMP4N/APPTX
TL23 A Lap around "Oslo"WMV-HQWMVZuneMP4N/APPTX
TL24 Improving .NET Application Performance and ScalabilityWMV-HQWMVZuneMP4N/APPTX
TL25 Parallel Programming for C++ Developers in the Next Version of Microsoft Visual StudioWMV-HQWMVZuneN/AN/APPTX
TL26 Parallel Programming for Managed Developers with the Next Version of Microsoft Visual StudioWMV-HQWMVN/AMP4N/APPTX
TL27 "Oslo": The LanguageWMV-HQWMVZuneN/AN/APPTX
TL28 "Oslo": Repository and ModelsWMV-HQN/AN/AN/AN/APPTX
TL29 Live Labs Web Sandbox: Securing Mash-ups, Site Extensibility, and GadgetsWMV-HQWMVZuneN/AN/APPTX
TL30 Microsoft Sync Framework AdvancesWMV-HQWMVZuneMP4N/APPTX
TL31 "Oslo": Building Textual DSLsWMV-HQWMVZuneMP4N/APPTX
TL32 Microsoft Visual Studio: Customizing and Extending the Development EnvironmentWMV-HQWMVZuneMP4N/APPTX
TL33 Managed Extensibility Framework: OverviewWMV-HQWMVZuneMP4N/APPTX
TL34 Managed and Native Code Interoperability: Best PracticesWMV-HQWMVZuneN/AN/APPTX
TL35 WCF: Developing RESTful ServicesWMV-HQWMVZuneMP4N/APPTX
TL36 Microsoft .NET Framework: Declarative Programming Using XAMLWMV-HQWMVZuneMP4N/APPTX
TL37 Microsoft Visual Studio Team System: Leveraging Virtualization to Improve Code Quality with Team LabWMV-HQWMVZuneMP4N/APPTX
TL38 WCF: Zen of Performance and Scale WMV-HQWMVZuneMP4N/APPTX
TL39 Coding4Fun: Windows Presentation Foundation Animation, YouTube, iTunes, Twitter, and Nintendo's WiimoteWMV-HQWMVZuneMP4N/APPTX
TL40 "Dublin" and .NET Services: Extending On-Premises Applications to the CloudWMV-HQWMVZuneMP4N/APPTX
TL42 Microsoft SQL Server 2008: Powering MSDNWMV-HQWMVZuneMP4ZIPPPTX
TL43 Microsoft XNA Game Studio: An OverviewWMV-HQWMVZuneMP4N/APPTX
TL44 IronRuby: The Right Language for the Right JobWMV-HQWMVZuneMP4N/APPTX
TL45 Microsoft Visual Studio Team System Database Edition: OverviewWMV-HQWMVZuneMP4N/APPTX
TL46 Microsoft Visual C# IDE: Tips and TricksWMV-HQWMVZuneMP4N/APPTX
TL47 Microsoft Visual Studio Team System: A Lap Around VSTS 2010WMV-HQWMVZuneMP4N/APPTX
TL48 Microsoft Visual Studio: Web Development FuturesWMV-HQN/AN/AMP4N/APPTX
TL49 Microsoft .NET Framework: Overview and Applications for BabiesWMV-HQWMVZuneMP4N/APPTX
TL50 Research: BAM, AjaxScope, and DolotoWMV-HQWMVZuneN/AN/APPTX
TL51 Research: Contract Checking and Automated Test Generation with PexWMV-HQWMVZuneN/AN/APPTX
TL52 Team Foundation Server 2010: Cool New FeaturesWMV-HQWMVZuneMP4N/APPTX
TL54 Natural Interop with Silverlight, Office, and Python in Microsoft Visual C# and Microsoft Visual BasicWMV-HQWMVZuneMP4N/APPTX
TL55 The Concurrency and Coordination Runtime and Decentralized Software Services ToolkitWMV-HQWMVZuneN/AZIPPPTX
TL56 Project "Velocity": Under the HoodWMV-HQWMVZuneMP4N/APPTX
TL57 Panel: The Future of Programming LanguagesWMV-HQN/AZuneN/AN/AN/A
TL58 Research: Concurrency Analysis Platform and Tools for Finding Concurrency BugsWMV-HQWMVZuneMP4N/APPTX
TL59 Visual Studio Debugger Tips & TricksWMV-HQWMVZuneMP4N/APPTX
TL60 Improving Code Quality with Code AnalysisWMV-HQWMVZuneMP4N/APPTX
TL61 Panel: The Future of Unit TestingWMV-HQN/AZuneN/AN/AN/A

Source

It seems that many of the other links (MP4, Zune, Zip, etc) are not yet live, so I’ve not included them (yet). one thing I might add is to ping each URL to see if it returns a 404 or not.. but that’s for later.

image

Here’s the code I used (see I told you it was quick and dirty… yes, I know I need to learn to use Linq better…). The majority of the magic is done through my fav HTML parsing tool the HTML Agility Pack.

Public Class MainForm


Private Sub BuildListButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuildListButton.Click
Dim htmWeb As New HtmlAgilityPack.HtmlWeb

Dim htmDoc As HtmlAgilityPack.HtmlDocument = htmWeb.Load(CatalogTextBox.Text)

Dim links As HtmlAgilityPack.HtmlNodeCollection = htmDoc.DocumentNode.SelectNodes("//div[@class='title']")

Dim ls = New Generic.List(Of HtmlAgilityPack.HtmlNode)

For Each link As HtmlAgilityPack.HtmlNode In links
ls.Add(link)
Next

Dim
q = From link In ls Order By link.InnerText

Dim sb = New System.Text.StringBuilder
sb.Append("<html><body>")
sb.Append("<table>")
sb.Append(GetHeader())

For Each link As HtmlAgilityPack.HtmlNode In q
sb.Append("<tr>")
Dim title = link.InnerText
Dim code = title.Substring(0, title.IndexOf(" "c))

If Not code.Contains("-") Then
sb.Append("<td>")
sb.Append(title)
sb.Append("</td>")
sb.AppendLine(GetVideoLinks(code))
End If

sb.Append("</tr>")

Next
sb.Append("</table>")

sb.Append("</body></html>")

WebBrowser1.DocumentText = sb.ToString


End Sub

Private Function
GetVideoLinks(ByVal code As String) As String

Dim
sb = New System.Text.StringBuilder

If WMVHQCheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/", code, "wmv", "WMV-HQ"))
End If
If
WMVCheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV/", code, "wmv", "WMV"))
End If
If
ZuneCheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/ZUNE/", code, "wmv", "Zune"))
End If
If
MP4CheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/MP4/", code, "mp4", "MP4"))
End If
If
ZIPCheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/ZIP/", code, "ZIP", "ZIP"))
End If
If
PPTXCheckBox.Checked Then
sb.AppendLine(GetVideoLink("http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/", code, "pptx", "PPTX"))
End If

Return
sb.ToString
End Function

Private Function
GetHeader() As String
Dim
sb = New System.Text.StringBuilder

sb.Append("<thead>")
sb.Append("<tr>")
sb.Append("<th width=0>")
sb.Append("Title")
sb.Append("</th>")
If WMVHQCheckBox.Checked Then
sb.Append("<th width=60>")
sb.Append("WMV-HQ")
sb.Append("</th>")
End If
If
WMVCheckBox.Checked Then
sb.Append("<th>")
sb.Append("WMV")
sb.Append("</th>")
End If
If
ZuneCheckBox.Checked Then
sb.Append("<th>")
sb.Append("Zune")
sb.Append("</th>")
End If
If
MP4CheckBox.Checked Then
sb.Append("<th>")
sb.Append("MP4")
sb.Append("</th>")
End If
If
ZIPCheckBox.Checked Then
sb.Append("<th>")
sb.Append("ZIP")
sb.Append("</th>")
End If
If
PPTXCheckBox.Checked Then
sb.Append("<th>")
sb.Append("PPTX")
sb.Append("</th>")
End If


sb.Append("</tr>")
sb.Append("</thead>")

Return sb.ToString

End Function

Private Function
GetVideoLink(ByVal URLPrefix As String, ByVal code As String, ByVal extension As String, ByVal name As String) As String
Dim
sb = New System.Text.StringBuilder
sb.Append("<td>")
sb.Append("<a href=")
sb.Append(Chr(34))
sb.Append(URLPrefix)
sb.Append(code)
sb.Append(".")
sb.Append(extension)
sb.Append(Chr(34))
sb.Append(">")
sb.Append(name)
sb.Append("</a>")

sb.Append("</td>")
Return sb.ToString


End Function


End Class




Update #1 10/31/2008 @8:00AM PDT:

Link verification added to the code and the list updated. So now only those links that do not return a 404 are active.

Here’s the updated code:

 Private Function GetVideoLink(ByVal URLPrefix As String, ByVal code As String, ByVal extension As String, ByVal name As String) As String
Dim
sb = New System.Text.StringBuilder
Dim url = URLPrefix & code & "." & extension
sb.Append("<td>")

If PageExists(url) Then
sb.Append("<a href=")
sb.Append(Chr(34))
sb.Append(url)
sb.Append(Chr(34))
sb.Append(">")
sb.Append(name)
sb.Append("</a>")

Else
sb.Append("N/A")
End If
sb.Append("</td>")

Return sb.ToString


End Function

Private Function
PageExists(ByVal URL As String) As Boolean
'Code leached and converted from http://blogs.microsoft.co.il/blogs/dorr/archive/2008/09/02/how-to-check-if-a-file-exists-over-http.aspx
Try
Dim
request = System.Net.HttpWebRequest.Create(URL)
request.Method = "HEAD" ' Just get the document headers, not the data.
request.Credentials = System.Net.CredentialCache.DefaultCredentials

'This may throw a WebException:
Using response As System.Net.HttpWebResponse = CType(request.GetResponse(), System.Net.HttpWebResponse)

If response.StatusCode = System.Net.HttpStatusCode.OK Then
Return True
Else
Return False
End If

End Using

Catch
ex As System.Net.WebException
Dim webResponse As System.Net.HttpWebResponse = CType(ex.Response, System.Net.HttpWebResponse)

'// Determine the cause of the exception, was it 404?
If webResponse.StatusCode = System.Net.HttpStatusCode.NotFound Then
Return False

End If

End Try

End Function


Update #2 11/1/2008 @10:50AM PDT:

Fixed an casing issue for MP4’s (Should have been “…d1/pdc08/MP4/” and not “…d1/pdc08/mp4/”)

Fixed an casing issue for ZIP’s (The file extension should have been ".ZIP” and not “.zip”)

Added links on the titles to the very cool Channel 9 PDC2008 page for the given session.

Update #3 11/2/2008 @9:00AM PST:

The source has been uploaded to a new CodePlex project, PDC Resource List Maker.

Please use it responsibly…

Update #4 11/8/2008 @9:00AM PST:

Updated to use the Channel9 RSS Feed, which resulted in 9 additional rows, including the Keynotes.