Free Microsoft Training from Microsoft Virtual Academy

What is MVA?

Successful technologists never stop learning and great technology never stops evolving. Microsoft Virtual Academy (MVA) offers online Microsoft training delivered by experts to help technologists continually learn, with hundreds of courses, in 11 different languages. Our mission is to help developers, knowledgeable IT professionals and advanced students learn the latest technology, build their skills, and advance their careers. MVA is free of charge, and the entire service is hosted on Windows Azure.


.NET MultiDictionary

Check out the post below for an alpha release of MultiDictionary.

Here’s a quick blurb showing how you would use MultiDictionary:

Introducing MultiDictionary

I could go into detail on the API and characteristics of MultiDictionary, but I’ll save that for later; let’s first look at some examples of typical usage for MultiDictionary.

MultiDictionary<string, int=""> myDictionary = new MultiDictionary<string, int="">();
myDictionary.Add("key", 1);
myDictionary.Add("key", 2);
myDictionary.Add("key", 3);
//myDictionary["key"] now contains the values 1, 2, and 3

When we index into our myDictionary, we get an ICollection<int> that contains the elements 1, 2, and 3. If the key wasn’t in the MultiDictionary, then an empty ICollection associated with that key will be returned.

All ICollection instances returned by indexing into the MultiDictionary function as indirections to the collections inside of our MultiDictionary, which means that as the MultiDictionary changes so does the ICollection and vice versa. Consider the following example that illustrates this:

MultiDictionary<string, int> myDictionary = new MultiDictionary<string, int>();
myDictionary.Add("key", 1);
ICollection myCollection = myDictionary["key"];
//myCollection now contains the values 1, and 2

The MultiDictionary also has methods for adding or removing one key-value pair at a time as well as adding or removing multiple values per key.

MultiDictionary<string, int> myDictionary = new MultiDictionary<string, int>();
myDictionary.AddRange("key1", new int[] { 1, 2, 3 });
myDictionary.AddRange("key2", new int[] { 1, 2, 3 });
myDictionary.RemoveItem("key2", 2);
//myDictionary now contains key2 with values 1 and 3

There are a few more interesting and useful methods inside of the MultiDictionary, but I’ll let you explore those on your own!

Learn Web Design: 50+ of the Best Online Educational Resources to Learn to Build Web Sites

Found a great site that has collected all the best online resources for learning web design.


Free Programming Books

Hit the link below to see a list of all the free programming books on GitHub.

Over 80 Microsoft Ebooks for Free


Hit the link below to grab over 80 free Microsoft ebooks.

Large collection of Free Microsoft eBooks for you, including: SharePoint, Visual Studio, Windows Phone, Windows 8, Office 365, Office 2010, SQL Server 2012, Azure, and more.


Another large collection of Free Microsoft eBooks and Resource Kits for you, including: SharePoint 2013, Office 2013, Office 365, Duet 2.0, Azure, Cloud, Windows Phone, Lync, Dynamics CRM, and more.

Hello World!

Hello , this is the first post of my new blog. I’ve been kicking around the idea of creating a blog for myself for a while now, but I’ve never had the time to get one set up. I’m constantly stashing away emails with cool tips and tricks related to .NET, SQL Server, as well as general programming topics. I eventually lose these files or forget they’re there and I’m always frustrated when I can’t find something.

My hope is this blog will serve as repository for this information for myself as well as anyone else that is interested. Don’t expect any consistency in how often I publish or the topics that I write about. I’m also a gadget guy, so I imagine I’ll have many posts related to the latest and greatest toys that I’m drooling over.