List of links

My bookmarks folder just scrolls and scrolls…in an effort to make it more managable, I’m moving some of the links here, along with my reasons for bookmarking them…

OpenXML

OpenXML is an api for creating Excel and Word compatatible documents from an application.
I have two OpenXML pages, one is a nice Stack Overflow overview of creating a word document, the other is a link to the OpenXML SDK documentation.

XML

I’ve been looking for a good free XML viewer for a while. XML Spy is awesome, but somehow I seem to be able to convince the powers that be to purchase a license, I have it for a few years, and then the license doesn’t get renewed…MindFusion XML Viewer is free for personal use and does some of what XML Spy does.

A while back I had a problem with the XML Serializer and decimal values. I fought with this problem for a while, and then..when all seemed lost and I was about to give up hope…I found this this great blog article about XML Serialization and formatting decimal properties.

HTML 5

A while back I decided to experiment with HTML 5 Canvas and clipping. While looking into how clipping should be implemented with HTML 5 I came across this useful fiddle.

A while back I had tried to create a workflow design app using HTML 5 where folks constructed workflows by connecting processes with arrows. This was a proof of concept and I was unable to convince the powers to choose my homegrown html5 workflow app over the UIs provided by Windows Workflow Foundation, even though (at least in my opinion) WWF was a howitzer and our problem was a sparrow. This page has a nice discussion of the issues involved, and techniques for, creating arrows in HTML5.

Windows Workflow is actually a pretty cool idea, but as near as I can tell, a technology that is not that popular and one that is complex. Microsoft has a great introduction, here. My favorite part of the article is this first sentence: “Everybody who writes code wants to build great software. ”

Diwali is the Indian festival of lights, and I believe it might be in my top five list of favorite holidays. It’s a little like our Forth of July in that fireworks form a big part of the celebrations. I have some Indian coworkers and one year I decided to share in the celebration by adding fireworks to the home page of our application (development version only!). My effort succeeded, my coworkers were delighted and I have to thank in part, this great article that talks about how to create HTML 5 fireworks, and these articles on animating text (very cool!), and creating fire/flame effects.

I’m pretty happy with the results of my experiment. I just wish I were a better artist!

Javascript

Sometimes I forget the syntax to some javascipt command. This Javascript Cheatsheet is helpful, especially when I’m forced to use notepad as my editor.

Design

Here is a great discussion of color and contrast. The article is intended for those who are designing signs but it applies to other types of graphic design.

Related to design are icon collections. I create a lot of one-off windows forms or XAML applications for various pet projects and I like my applications to have a professional appearance. For that, it’s necessary to have a library of icons to use for toolbars, buttons and the like. The Silk Companion icons are awesome and I have used them a lot. Another good library of free icons is the FamFamFam library.

I’ve also dabbled a little with creating my own icons, less successfully than I would like. To that end, I refered to this blog tutorial that discusses creating your own icons using Adobe Illustrator.

I also looked at a couple of online utilities for converting images to icons. ICOConvert is free.

WCF

A few years ago I was in a position to do a lot of work with WCF. Recently I haven’t had occasion to work as much with Windows Communication Foundation, but I did experiment a little with it as a way to quickly do file transfers.

I believe that for large file transfers WCF may offer better efficiency than REST type transfers, and to that end I put together a simple sample web service to transfer files using WCF.

This page helped me a lot in my research. I also want to include a shout out to this page, which is a great quick reference for WCF.

Visual Studio

One of the things that I really like about Microsoft products is their extensibility. Most Microsoft applications can be customized and extended. Visual Studio is no exception, and extensions provide for hooking custom functionality into the Visual Studio user interface.

Most of my ideas for extensions involve windows or dialogs, and this MSDN article describes what is involved in adding a tool window.

Although a little dated (2006), this blog article by Robert Horvick provides an overview of creating a visual studio extension.

Once you create a visual studio extension you will need to package it. This CodeProject article by Kornfeld Peter, though a bit dated, discusses the steps necessary to create a VSPackage file.

Much of the functionality in Visual Studio is exposed as command-line console applications. This article discusses VsDiffMerge.exe, which is a utility included with Visual Studio, and how to use it to compare files.

Related to VsDiffMerge, here are some nice instructions for making a windows shortcut to compare files using visual studio. It’s a little bit of work to set up but is great.

If you’ve ever attempted to uninstall visual studio, but found that some unwanted files were left behind, then perhaps VisualStudioUninstaller is for you. This open source project vaccums out all those unwanted files. There is a blog article that explains a littel about why you might run into this situation.

LINQ

Most of the Linq that I use on a daily basis is pretty simple, however I have, at times, had reason to work with some complex LINQ queries, or LINQ queries where performance is at a premium. This blog posting by Patric Smacchia looks at LINQ performance and offers some tips for writing more efficient LINQ queries.

LinqPad is an essential tool for developing complex linq queries.

Here also is a page I put together with examples and tips for using Linq with XML.

TFS

I’ve spent a chunk of my career in factory settings, and am familiar with the use of kanbans to control work in progress. Thus, the TFS kanban board is comfortable and familiar to me. This page describes how to configure TFS kanban boards.

TFS supports a query language. There is some documentation for the work item query language, here.

REST API for TFS

REST APIs are great. With REST APIs there are no SDK dlls to manage. There are a few software tools at that I use on a daily basis that provide REST apis. There is an introduction to the TFS REST api here, with some exampls.

Documentation for the REST API is available here. There is a TFS object model reference here that also might be useful in determining where to look for different kinds of source, workitem or version information.

There can be significant differences in the REST api, depending on TFS version. We’re using 2.0 (2015) and I was able to find a mapping from TFS version to api version here, and documentation for the 2015/2.0 REST API here.

The TFS SDK

Before the TFS REST api, there was the TFS SDK.

One project I worked on involved updating the workitem created date and change date values as these dates are used in burndown charts. This page offered some advice, and this page explained how to retrieve the revision history of a field.

MSBuild

I have worked on a project involving a very large solution with over 50 projects. I wanted to write a simple console application that would ensure that the compile path, platform target and reference types were correct, and this page helped me identify the parts of the SLN and CSPROJ files that the application needed to check.

On another occasion, I looked at having MSBuild automatically update the version number of an application each time it was compiled. Although we did not end up doing this for the application, this guide to using powershell to create pre-build events, and this guide to using template files to auto increment version number were helpful.

Excel VBA

Every so often I have reason to work with VBA macros in Excel.

Here’s some useful information if you need to place a shape adjacent to a specific cell in Excel. To add a shape, you use the Shapes.AddShape method.

I am considering packaging up some of my macros as an excel add-in. Here’s the documentation for developing office add-ins. This blog posting has a more detailed discussion of building add-ins. This page is for a utility that can make an add-in compatible with multiple versions of excel. This page offers some alternatives to add ins for distributing macros.

C#

I frequently need to look up the format strings for date / time values in C#. This page has a very nice listing.

This stack overflow post has a nice listing of less commonly used C# features and tricks.

COM

I’ve done quite a bit of work with dot net applications that interact with COM applications (such as VB6).

This page describes how to catch events in C# that are raised by a referenced COM component.

COM can be very difficult to work with. Here is a page that provides a broad overview of COM and registry keys. There can be multiple versions of an object with different identifying GUIDs. Here’s a page that describes how to determine the GUID of the COM object that you are referencing in C#.

MSDTC

Distributed Transaction Controller is a part of the windows o/s that manages transactions that include multiple COM components and issues with DTC can be a bear to debug/diagnose. This page offers some ideas for resolving issues involving MSDTC.