"Men have become the tools of their tools"
- John Tudor

Part 1 - Toolset Design Fundamentals

Chapter 01 - What is a Tool? What is a Toolset?
Chapter 02 - Why Use C#? Why Use .NET?
Chapter 03 – Examples of Commercial Toolsets
Chapter 04 – Everything Starts with a Plan
Chapter 05 – Development Phases of a Tool
Chapter 06 – Measurement Metrics for Tool Quality
Chapter 07 – Fundamentals of User Interface Design
Chapter 08 – Distributed Componential Architecture Design
Chapter 09 – Solutions to Bridge Domain Gaps
Chapter 10 – Unit Testing with NUnit
Chapter 11 – Code Documentation with NDoc and XML
Chapter 12 – Microsoft Coding Conventions
Chapter 13 – Enforcing Coding Policies with FxCop
Chapter 14 – Best Practices for Robust Exception Handling

Part 2 - Techniques for Arbitrary Tools

Chapter 15 – Compressing Data to Reduce Memory Footprint
Chapter 16 – Protecting Sensitive Data with Encryption
Chapter 17 – Generic Batch File Processing Framework
Chapter 18 – Ensuring a Single Application Process
Chapter 19 – Implementing a Checksum to Protect Data Integrity
Chapter 20 – Using the Property Grid Control with Late Binding
Chapter 21 – Adding Printing Support for Arbitrary Data
Chapter 22 – Generic Command Line Input Parser
Chapter 23 – Layering WinForms on Console Applications
Chapter 24 – Overview of Database Access with ADO.NET

Part 3 - Techniques for Graphical Tools

Chapter 25 - Using Direct3D Swap Chains with MDI Applications
Chapter 26 – Constructing an Aesthetic Texture Browser Control
Chapter 27 – Converting from Screen Space to World Space
Chapter 28 – Asynchronous Input Device Polling

Part 4 – Techniques for Network Tools

Chapter 29 – Distributed Computing using .NET Remoting
Chapter 30 – Downloading Network Files Asynchronously

Part 5 - Techniques for Legacy Interoperability

Chapter 31 - Exchanging Data between Applications
Chapter 32 - Interacting with the Clipboard
Chapter 33 - Using .NET Assemblies as COM Objects
Chapter 34 - Building a Managed Wrapper with C++/CLI
Chapter 35 - Managing Items in the Recent Documents List

Part 6 - Techniques to Improve Performance

Chapter 36 - Playing Nice with the Garbage Collector
Chapter 37 - Using Unsafe Code and Pointers
Chapter 38 - Investigating Managed Code Performance
Chapter 39 - Responsive UI during Intensive Processing

Part 7 - Techniques to Enhance Usability

Chapter 40 - Designing an Extensible Plugin-Based Architecture
Chapter 41 - Persisting Application Settings to Isolated Storage
Chapter 42 - Designing a Reusable and Versatile Loading Screen
Chapter 43 - Writing Context Menu Shell Extensions

Part 8 - Techniques to Increase Productivity

Chapter 44 - Automating Workflow using Job Scheduling
Chapter 45 - MVC Object Model Automation with CodeDom

Part 9 - Techniques for Deployment and Support

Chapter 46 - Deployment and Versioning with ClickOnce
Chapter 47 - Testing for the Availability of the .NET Framework
Chapter 48 - Building and Customizing an MSI Installer
Chapter 49 - Determining Binary File Differences




All Content © 2006 Graham Wihlidal. All Rights Reserved.